Alternativa E - Template Method
O padrão Template Method é utilizado quando queremos definir a estrutura geral de um algoritmo em uma classe base, permitindo que as subclasses redefinam passos específicos sem alterar a estrutura principal.
Análise do Enunciado
A questão descreve exatamente a aplicação desse padrão ao mencionar:
- Diferentes implementações: Subclasses que herdam de uma classe abstrata.
- Passos comuns: Métodos concretos na classe base que não podem ser alterados pelos descendentes.
- Passos específicos: Métodos abstratos ou virtuais que devem ser implementados por cada subclasse para variar o comportamento.
Isso cria um esqueleto fixo (template) onde partes variáveis são preenchidas conforme a necessidade.
Comparativo com as outras alternativas
| Alternativa | Conceito Principal | Por que não se aplica? |
|---|
| A - Factory Method | Criação de objetos | Foca em como criar instâncias, não na sequência de passos de uma operação. |
| B - Facade | Interface simplificada | Serve para esconder complexidade de um sistema, não para estruturar algoritmos. |
| C - Adapter | Compatibilidade de interfaces | Usado para fazer interfaces incompatíveis funcionarem juntas. |
| D - Strategy | Algoritmos intercambiáveis | Envolve trocar o algoritço inteiro em tempo de execução, enquanto o Template define a estrutura de execução passo a passo. |
Conclusão
Enquanto o Strategy foca na troca completa do comportamento algorítmico durante a execução, o Template Method foca na hierarquia e na reutilização de código comum, deixando apenas os detalhes específicos para serem sobrescritos. Portanto, a alternativa correta é a E.