Manual de Ingeniería Informática/Patrones Creacionales

Abstract Factory (Fábrica abstracta) editar

Problema editar

Proporcionar una interfaz que permite crear familias de objetos relacionados entre sí, sin especificar (ni conocer a priori) sus clases concretas.

Solución editar

Participantes:

  • 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 editar

Se 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.

Ejemplo editar

Builder (Constructor virtual) editar

Problema editar

Solución editar

Beneficios, Desventajas y Variantes editar

Ejemplo editar

Factory Method (Método de fabricación) editar

Problema editar

Solución editar

Beneficios, Desventajas y Variantes editar

Ejemplo editar

Prototype (Prototipado) editar

Problema editar

Solución editar

Beneficios, Desventajas y Variantes editar

Ejemplo editar

Singleton (Instancia única) editar

Problema editar

Solución editar

Beneficios, Desventajas y Variantes editar

Ejemplo editar