Patrón Template Method¶
Problema a resolver¶
Problema
Dada una clase C con un método m, donde m presenta una alta variabilidad no acotada en un punto concreto de su implementación, cómo conseguir que la clase C pueda recibir nuevos cambios sin necesidad de modificarla.
Ventajas e Incovenientes¶
Strategy vs Template Method¶
- El patrón Strategy permite modificar el variante en uso en tiempo de ejecución, mientras que TemplateMethod no.
- El patrón Template Method permite controlar las configuraciones de múltiples estrategias para que sean coherentes, mientras que con el Strategy podríamos crear configuaciones erróneas.
- El patrón Template Method permite un más fácil acceso a las partes internas de una clase, mientras que en el caso del patrón Strategy hay que pasar los datos que hagan falta como parámetros a las estrategias.
Receta para aplicar el patrón¶
- Identificar el bloque de código del método
mde la claseCdonde se presenta la àlta variabilidad.- Identificar las entradas y salidas de dicho bloque de código.
- Diseñar un método
xque abstraiga dicho bloque de código.- Añadir dicho método
xcomo abstracto a la claseC, que pasa a ser abstracta.- Reemplazar el bloque de código del método
mcon alta variabilidad por una llamada al método abstractox.- Implementar tantas subclases de la clase
Ccomo variantes existían en el bloque de código con alta variabilidad.