Manual de Ingeniería Informática/Patrones Creacionales
Abstract Factory (Fábrica abstracta)
editarProblema
editarProporcionar una interfaz que permite crear familias de objetos relacionados entre sí, sin especificar (ni conocer a priori) sus clases concretas.
Solución
editarParticipantes:
- FabricaAbstracta: Declara una interfaz para operaciones que crean objetos producto abstractos.
- FabricaConcreta: Implementa las operaciones para crear objetos producto concretos.
- ProductoAbstracto:Declara una interfaz para un tipo de objeto producto.
- ProductoConcreto: Define un objeto producto para que sea creado por la fábrica correspondiente. Implementa la interfase ProductoAbstracto.
- Cliente: Sólo usa interfaces declaradas por las clases FabricaAbstracta y ProductoAbstracto.
Beneficios, Desventajas y Variantes
editarSe debe usar cuando:
- Un sistema debe ser independiente de cómo se crean, componen y representan sus productos.
- Un sistema debe ser configurado con una familia de productos entre varias.
- Una familia de objetos producto relacionados está diseñada para ser usada conjuntamente y es necesario hacer cumplir esa restricción.
- Se quiere proporcionar una biblioteca de clases de productos y sólo se quiere revelar sus interfaces, no sus implementaciones.
Consecuencias:
- Aísla las clases concretas.
- Facilita el intercambio de familias de productos.
- Promueve la consistencia entre productos.
Desventajas:
- Es difícil dar cabida a nuevos tipos de productos.