Manual de Ingeniería Informática/Patrones Creacionales

De Wikilibros, la colección de libros de texto de contenido libre.

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]