Define una estructura algorítmica en la súper clase, delegando la implementación a las subclases. Es decir, define una serie de pasos, en donde los pasos serán redefinidos en las subclases.
Nombre:
Template Method.
Propósito:
Define el esqueleto de un algoritmo, dejando algunos pasos a las subclases. Template Method permite a las subclases redefinir ciertos pasos de un algoritmo sin cambiar la estructura del algoritmo.
Aplicabilidad:
Este patrón se utiliza generalmente cuando:
· Para proporcionar un esqueleto de estructura de un método, que permite a las subclases redefinir partes específicas del método.
· Para centralizar los pedazos de un método que se definen en todos los subtipos de una clase, pero que siempre tienen una pequeña diferencia en cada subclase.
· Para el control de las operaciones de las subclases que tienen la obligación de anular.
Estructura:

Participantes:
· AbstractClass: Una clase en este papel tienen un método concreto que contiene la lógica de alto nivel (el esqueleto del algoritmo) de la clase. Este es el método plantilla indicado en el diagrama. Este método llama a otros métodos, definidos en la clase AbstractClass como métodos abstractos, que invocan a la lógica de bajo nivel que varia para cada subclase de la clase AbstractClass.
· ConcreteClass: Una clase en este papel es una subclase concreta de una clase AbstractClass. La clase AbstractClass sobrescribe los métodos abstractos definidos en su superclase y proporciona la lógica necesaria (los pasos del algoritmo) para completar la lógica del método plantilla.
Consecuencias:
· Favorece la reutilización del código.
· Lleva a una estructura de control invertido, la superclase base invoca los métodos de las subclases.
Patrones relacionados:
· Factory Method.
· Strategy.
Etiquetas: Behavioral Patterns, Patrones de Comportamiento, Template Method