Dicho de otra forma, define un esqueleto de un algoritmo, delegando algunos pasos a las subclases. Permite redefinir parte de dicho algoritmo sin cambiar su estructura.
Se debe utilizar este patrón cuando.
- Se quiera factorizar el comportamiento común de varias subclases.
- Se necesite implementar las partes fijas de un algoritmo una sola vez y dejar que las subclases implementen las partes variables.
- Se busque controlar las ampliaciones de las subclases, convirtiendo en métodos plantillas aquéllos métodos que pueden ser redefinidos.
Diagrama UML
TemplateConcreto o ConcreteClass: implementa los métodos abstractos para realizar los pasos del algoritmo que son específicos de la subclase.
Ejemplo
Como ejemplo, imaginemos una empresa que posee socios, clientes, empleados, etc. Cuando se les solicite que se identifiquen, cada uno lo realizará de distinta manera: quizas un empleado tiene un legajo, pero un cliente tiene un numero de cliente, etc.
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.




