Introduccion:
Define una operacion, el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos del algoritmo sin cambiar su estructura.
Nombre del Patron:
Template Method (Metodo Plantilla).
Clasificacion del Patron:
Patron de Comportamiento.
Intencion:
Proporcionar un metodo que permite que las subclases redefinan parte del metodo sin rescribirlo.
Motivacion:
Cuando se construyen jerarquias de clases complejas para una aplicacion, a menudo se duplican distintas partes de codigo. esa situacion no es deseable, porque la intencion es reutilizar tanto codigo como sea posible. La refactorizacion de codigo para que los metodos comunes esten en una superclase es un paso en la direccion correcta. El problema es que algunas veces una operacion que ha sido refactorizada confia en la informacion especifica que solamente esta disponible en una subclase. Debido a esto, los desarrolladores a menudo deciden no refactorizar y aceptar la presencia de codigo duplicado en distintas clases.
Estructura:
Prticipantes:
AbstractTemplate: Implementa un metodo plantilla que define el esqueleto de un algoritmo y define metodos abstractos que implementan las subclases concretas.
ConcreteTemplate: Implementa los métodos abstractos para realizar los pasos del algoritmo que son específicos de la subclase.
Colaboraciones:
Las clases concretas confían en que la clase abstracta implemente la parte fija del algoritmo.
Consecuencias:
Favorece la reutilización del código. Muy útiles para construir bibliotecas, pues ayuda a factorizar el comportamiento común de las clases.
Lleva a una estructura de control invertido (Principio de Hollywood): la superclase base invoca los métodos de las subclases.
Define una operacion, el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos del algoritmo sin cambiar su estructura.
Nombre del Patron:
Template Method (Metodo Plantilla).
Clasificacion del Patron:
Patron de Comportamiento.
Intencion:
Proporcionar un metodo que permite que las subclases redefinan parte del metodo sin rescribirlo.
Motivacion:
Cuando se construyen jerarquias de clases complejas para una aplicacion, a menudo se duplican distintas partes de codigo. esa situacion no es deseable, porque la intencion es reutilizar tanto codigo como sea posible. La refactorizacion de codigo para que los metodos comunes esten en una superclase es un paso en la direccion correcta. El problema es que algunas veces una operacion que ha sido refactorizada confia en la informacion especifica que solamente esta disponible en una subclase. Debido a esto, los desarrolladores a menudo deciden no refactorizar y aceptar la presencia de codigo duplicado en distintas clases.
Estructura:
Prticipantes:
AbstractTemplate: Implementa un metodo plantilla que define el esqueleto de un algoritmo y define metodos abstractos que implementan las subclases concretas.
ConcreteTemplate: Implementa los métodos abstractos para realizar los pasos del algoritmo que son específicos de la subclase.
Colaboraciones:
Las clases concretas confían en que la clase abstracta implemente la parte fija del algoritmo.
Consecuencias:
Favorece la reutilización del código. Muy útiles para construir bibliotecas, pues ayuda a factorizar el comportamiento común de las clases.
Lleva a una estructura de control invertido (Principio de Hollywood): la superclase base invoca los métodos de las subclases.
Muy bueno el blog, te paso nuestro blog de patrones que tiene algunos implementados con ejemplos practicos limakuarg.blogspot.com.
ResponderEliminar