O Template Method é um padrão de projeto comportamental que permite definir o esqueleto de um algoritmo em uma classe base e permitir que as subclasses substituam as etapas sem alterar a estrutura geral do algoritmo.
Vamos considerar o exemplo da funcionalidade One Time Password (OTP). Existem diferentes maneiras de entregar o OTP a um usuário (SMS, email, etc.). Mas, independentemente de ser um OTP SMS ou email, todo o processo OTP é o mesmo:
Gere um número aleatório de n dígitos.
Salve este número no cache para verificação posterior.
Prepare o conteúdo.
Envie a notificação.
Quaisquer novos tipos de OTP que serão introduzidos no futuro provavelmente ainda passarão pelas etapas acima.
Portanto, temos um cenário em que as etapas de uma operação específica são as mesmas, mas a implementação dessas etapas pode ser diferente. Esta é uma situação apropriada para considerar o uso do padrão Template Method.
Primeiro, definimos um algoritmo template base que consiste em um número fixo de métodos. Esse será o nosso método modelo. Em seguida, implementaremos cada um dos métodos da etapa, mas deixaremos o método modelo inalterado.