Padrão Template Method
Gabarito: letra D. O Template Method é o padrão de projeto comportamental que define o esqueleto de um algoritmo em uma classe base, deixando que subclasses implementem etapas específicas. As demais alternativas (Decorator, Singleton, Strategy) atendem a outros propósitos.
O Template Method é um dos padrões GOF comportamentais. Sua intenção é "definir o esqueleto de um algoritmo em uma operação, postergando a definição de alguns passos para subclasses. O Template Method permite que subclasses redefinam certos passos de um algoritmo sem mudar a estrutura do mesmo." (Gamma et al., 1995).
Alternativa A — ❌ Incorreta
Decorator é um padrão estrutural que permite adicionar responsabilidades a objetos dinamicamente, fornecendo uma alternativa flexível à herança para extensão de funcionalidades. Não define esqueleto de algoritmo.
Alternativa B — ❌ Incorreta
Singleton é um padrão criacional que garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela. Não está relacionado à definição de algoritmos.
Alternativa C — ❌ Incorreta
Strategy é um padrão comportamental que define uma família de algoritmos, encapsula cada um e os torna intercambiáveis. O Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam, mas não define um esqueleto fixo com partes variáveis; ele delega o algoritmo inteiro.
Alternativa D — ✅ Correta ⟵ GABARITO
Template Method define a estrutura de um algoritmo em uma classe base (template), permitindo que subclasses implementem ou sobrescrevam partes específicas (passos) sem alterar a estrutura geral. Exemplo clássico: uma classe Jogo com método jogar() que chama inicializar(), jogarRodada(), finalizar(), onde cada subclasse implementa esses métodos de forma específica.
Gabarito: letra D.