JavaScriptPOOavancado

Padrão Template Method

O Template Method é um padrão de projeto que define o esqueleto de um algoritmo em um método base, deixando que subclasses implementem partes específicas. Em código real, você encontra isso em frameworks de testes (como o ciclo setUp → test → tearDown), em processadores de dados (parse → transform → output) ou em geradores de relatório. Dominá-lo evita duplicar a estrutura lógica e facilita a manutenção, já que a ordem das etapas fica centralizada.

O PROBLEMA

Implemente gerador de relatórios com Template Method. RelatorioPDF e RelatorioHTML sobrescrevem partes.

EXEMPLO

new RelatorioPDF().gerar() → cabeçalho → dados em PDF → rodapé
new RelatorioHTML().gerar() → <html>...</html>

SOBRE O CONCEITO

O padrão Template Method funciona com um método concreto (ex.: gerar()) na classe base que chama métodos abstratos ou de gancho (criarCabecalho(), imprimirDados(), criarRodape()). As subclasses sobrescrevem apenas esses métodos, não o gerar(). O erro comum é sobrescrever o próprio gerar() nas subclasses, o que quebra o padrão e tira o controle do fluxo da classe base. No exercício, você deve usar class, extends, super e constructor para definir a estrutura. As subclasses RelatorioPDF e RelatorioHTML devem implementar as partes específicas (ex.: formato dos dados), enquanto a ordem (cabeçalho → dados → rodapé) é mantida no método gerar() da classe abstrata. Isso segue o princípio de Hollywood: 'não nos ligue, nós ligamos para você'.

RESOLUÇÃO

Mais exercícios de POO

JSP021 · AvançadoClasse LinkedListJSP005 · BásicoContador de instânciasJSP008 · Básicoinstanceof e verificação de tipoJSP009 · BásicoClasse abstrata simulada
Ver todos os exercícios de JavaScript