Abstract Factory es un patrón creacional que proporciona una interfaz para crear familias de objetos sin especificar su implementación concreta, este utiliza clases abstractas y desacopla la implementación concreta del sistema.
Características generales de este patrón:
Nombre:
Abstract Factory.
Proposito:
Proveer una interfaz para crear familias o relaciones de objetos que dependan entre sí, sin especificar sus clases concretas.
Sinónimos:
Kit o Toolkit.
Aplicabilidad:
Este patrón se utiliza generalmente cuando:
· Un sistema debe ser independiente de cómo sus productos son creados, compuestos y representados.
· Un sistema debe ser configurado con una de múltiples familias de productos.
· Una familia de objetos relacionados es diseñada para ser usada de forma conjunta, y se debe garantizar esa restricción.
· Se quiere proporcionar una librería de clases de productos, y solo revelar sus interfaces más no sus implementaciones.
Participantes:
· AbstractFactory: Declara una interfaz para operaciones que crean objetos de productos abstractos.
· ConcretedFactory: Implementa las operaciones para crear objetos de productos concretos.
· AbstractProduct: Declara una interfaz para un tipo de objeto de producto.
· ConcreteProduct: Define un objeto de producto para ser creado por la correspondiente fabrica concreta, implementa la interfaz AbstractProduct.
· Client: usa solo las interfaces declaradas por las clases AbstractFactory y AbstractProduct.
Colaboraciones:
Normalmente se crea una única instancia de una clase concreta en tiempo de ejecución. Esta fábrica crea objetos que tienen determinada interfaz. Para crear objetos diferentes se usar una fábrica diferente
Fábrica abstracta difiere la creación de objetos a las subclases concretas.
Consecuencias:
· Aísla las clases concretas.
· Hace fácil cambiar de familia de productos.
· Promueve la consistencia entre productos.
· Es difícil soportar nuevos tipos de productos.
Implementación:
· Se puede implementar la fábrica como un singleton.
· En la creación de productos.
· La fabrica abstracta solo declara la interfaz de los productos.
· Usar el patrón FactoryMethod.
· Colocar en los métodos create un parámetro que indique lo que se desea crear.
Patrones relacionados:
· Factory Method.
· Prototype.
· Singleton.
Etiquetas: Abstract Factory, Creational patterns, Fabrica Abstracta, Patrones Creacionales