El Método Plantilla es un patrón de comportamiento de diseño de software que define el esqueleto de un algoritmo en la superclase pero permite que las subclases anulen pasos específicos del algoritmo sin cambiar su estructura.

¿Qué problema resuelve el patrón recuerdo?

Si estás desarrollando una aplicación de minería de datos que analiza documentos corporativos (PDF, DOC, CSV), y quieres extraer datos significativos de estos documentos en un formato uniforme, es muy probable que en las clases responsables por los diferentes tipos de ficheros (PDF, DOC, CSV) haya mucho código similar.

Entonces tu objetivo es deshacerte de la duplicación de código y dejar intacta la estructura del algoritmo.

El patrón Método Plantilla sugiere dividir un algoritmo en una serie de pasos, convertir estos pasos en métodos y colocar una serie de llamadas a estos métodos dentro de un solo método de plantilla.

¿Cuándo usar el patrón recuerdo?

Podrías utilizar el método de plantilla cuando quieras permitir que los clientes amplíen solo pasos particulares de un algoritmo, pero no todo el algoritmo o su estructura. Este método te permite convertir un algoritmo monolítico en una serie de pasos individuales. Luego se puede ampliar mediante subclases manteniendo intacta la estructura definida de una superclase.

También podrías utilizar el patrón cuando tengas varias clases que contengan algoritmos casi idénticos con algunas diferencias menores. Cuando conviertes un algoritmo de este tipo en un método de plantilla, también puedes extraer los pasos con implementaciones similares en una superclase, eliminando la duplicación de código.

Pros y contras del patrón recuerdo

Los siguientes son algunos de los “pros y cons” de este patrón.

Pros

Contras

  • Puedes permitir que los clientes anulen solo ciertas partes de un algoritmo grande, para que se vean menos afectados por los cambios que ocurren en otras partes del algoritmo

  • Puedes extraer el código duplicado en una superclase

  • Algunos clientes pueden estar limitados por el esqueleto proporcionado de un algoritmo

  • Puedes violar el principio de dustitución de Liskov al suprimir la implementación de un paso predeterminado a través de una subclase

  • Los métodos de plantilla tienden a ser más difíciles de mantener cuantos más pasos tienen. 

“Show me the code”

El patrón Método Plantilla es un patrón relativamente poco complejo y bastante popular, y común, en frameworks de PHP. Este patrón simplifica la extensión del comportamiento de un framework predeterminado utilizando la herencia de clase.

Si quieres tener una idea de como se ve el código del Método Plantilla, puedes ver el ejemplo de la vida real, en PHP, de refactoring.guru. En el ejemplo del mundo real, podrás ver cómo el patrón define un esqueleto del algoritmo de publicación de mensajes en las redes sociales.

Verás que cada subclase representa una red social separada e implementa todos los pasos de manera diferente, pero reutiliza el algoritmo base.

¿Utilizas el patrón Método Plantilla en tus proyectos? ¿Qué tal la experiencia? ¡Coméntalo abajo!

Fuentes:

Compartir es construir