Manual de Ingeniería Informática/Patrones Creacionales

Abstract Factory (Fábrica abstracta)Editar

ProblemaEditar

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

SoluciónEditar

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 VariantesEditar

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.

EjemploEditar

Builder (Constructor virtual)Editar

ProblemaEditar

SoluciónEditar

Beneficios, Desventajas y VariantesEditar

EjemploEditar

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

ProblemaEditar

SoluciónEditar

Beneficios, Desventajas y VariantesEditar

EjemploEditar

Prototype (Prototipado)Editar

ProblemaEditar

SoluciónEditar

Beneficios, Desventajas y VariantesEditar

EjemploEditar

Singleton (Instancia única)Editar

ProblemaEditar

SoluciónEditar

Beneficios, Desventajas y VariantesEditar

EjemploEditar