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.

Solución

Ejemplo Concreto

Solución Abstracta

Ventajas e Incovenientes

Strategy vs Template Method

  1. El patrón Strategy permite modificar el variante en uso en tiempo de ejecución, mientras que TemplateMethod no.
  2. 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.
  3. 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

  1. Identificar el bloque de código del método m de la clase C donde se presenta la àlta variabilidad.
  2. Identificar las entradas y salidas de dicho bloque de código.
  3. Diseñar un método x que abstraiga dicho bloque de código.
  4. Añadir dicho método x como abstracto a la clase C, que pasa a ser abstracta.
  5. Reemplazar el bloque de código del método m con alta variabilidad por una llamada al método abstracto x.
  6. Implementar tantas subclases de la clase C como variantes existían en el bloque de código con alta variabilidad.