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
AbstractTemplate o AbstractClass: implementa un método plantilla que define el esqueleto de un algoritmo y define métodos abstractos que deben implementar las subclases concretas
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.
3 comentarios:
Hola soy estudiante de computación y en una asignación me pidieron un ejemplo de una implementacion de un Factory Method. Este ejemplo que publicaste se ve algo sencillo pero las fotos se ven un poco cortadas.
Podrías publicar el código o enviármelo a esta dirección cheojeg@gmail.com
Hola, una puntualización, con respecto a este patrón.
No piensas que sería más conveniente, ya que delegas la implementación por medio de metodos "plantilla" a las clases hijas, declarar el método principal identificate() como final??
De esta manera se forzaría a que ninguna clase derivada pudiera sobreescribir el método principal identificate() y sólo pudieran reimplementar los métodos plantilla, por lo que la herencia de implementación sería más segura forzando a reimplementar realmente lo que nos interesa
Un saludo.
Muy buena idea la del final, se podría hacer como decís.
Con respecto al primer comentario, Cheos te pido disculpas se me paso tu comentario. Aprovecho y te comento que lo único que corto en las fotos son los getters y setters. Lo que realmente importa esta todo. Saludos!
Publicar un comentario