O padrão template method
PADRÃO TEMPLATE METHOD
ANDRÉ DE PAULA RIBEIRO VAGNER LOPES DOS SANTOS
QUAL É A PROPOSTA DO TEMPLATE METHOD?
O Template Method tem como proposta facilitar a implementação de cenários onde se deseja encapsular algoritmos, fornecendo as classes derivadas o poder de definir as pré-condições (input) do algoritmo e deixando a classe Base responsável pela estrutura do algoritmo, précondições globais que fazem sentido a todas as classes derivadas, bem como, as pós-condições (output).
A ideia básica por trás desse modelo é disponibilizar uma única classe base que ficará responsável pela estrutura do algoritmo, evitando ter "pedaços" do algoritmo espalhados pelas classes derivadas o que gera redundância no código, a classe derivada será responsável de implementar o algoritmo de forma independente, cada classe derivada implementará o algoritmo de uma forma diferente ou igual porém sempre respeitando a estrutura do algoritmo que estará definida na classe Base.
O padrão Método Template define um método em que partes do algoritmo chamam métodos abstratos que podem ser sobrescritos por Classes filhas. O propósito é permitir que classes filhas definam o comportamento do método em certos pontos.
VERIFIQUEMOS O DIAGRAMA:
Tem gente que não consegue viver sem café; outros não vivem sem chá. Qual é o ingrediente comum? Cafeína, claro! Mas não é só isso. O chá e o café também são preparados de maneiras muito semelhantes.
Preparando algumas classes de café e chá (em Java)
SENHOR, POSSO ABSTRAIR SEU CAFÉ E SEU CHÁ?
Aprimorando o projeto... O que mais poderia haver em comum entre Café e Chá?
Observe que ambas as receitas seguem o mesmo algoritmo:
Será que poderíamos também abstrair a classe prepareRecipe()? Abstraindo prepareRecipe() Examinemos mais detalhadamente como é possível abstrair a classe prepareRecipe() a partir de cada subclasse (ou