Abstract Factory -Design Pattern - GoF

4
Patrones de Diseño – Abstract Factory Provee una interface para la creación de familias de objetos relacionados o dependientes sin especificar sus clases concretas. También conocido como Kit. Se usa cuando : Un sistema debería ser independiente de cómo sus objetos producto son creados, compuestos y representados Un sistema debería ser configurado con una de múltiples familias de objetos producto. Un familia de objetos producto relacionados están diseñados para trabajar juntos y se necesita cumplir con esa restricción. Se quiere proveer de una librería de clases de objetos producto y se requiere revelar sólo sus interfaces y no sus implementaciones. Un ejemplo de uso relativamente común de da en la creación de familias de interfaces gráficas que soporten distintos tipos de presentación(look-and-feel).

Transcript of Abstract Factory -Design Pattern - GoF

Page 1: Abstract Factory -Design Pattern - GoF

Patrones de Diseño – Abstract Factory

●Provee una interface para la creación de familias de objetos relacionados o dependientes

sin especificar sus clases concretas.

●También conocido como Kit.

Se usa cuando :

●Un sistema debería ser independiente de cómo sus objetos producto son creados,

compuestos y representados

●Un sistema debería ser configurado con una de múltiples familias de objetos producto.

●Un familia de objetos producto relacionados están diseñados para trabajar juntos y se

necesita cumplir con esa restricción.

●Se quiere proveer de una librería de clases de objetos producto y se requiere revelar

sólo sus interfaces y no sus implementaciones.

Un ejemplo de uso relativamente común de da en la creación de familias de

interfaces gráficas que soporten distintos tipos de presentación(look-and-feel).

Page 2: Abstract Factory -Design Pattern - GoF

Patrones de Diseño – Abstract Factory

Estructura :

Page 3: Abstract Factory -Design Pattern - GoF

Patrones de Diseño – Abstract Factory

Participantes :●AbstractFactory : Declara una interfaz para operaciones que crean objetos producto

abstractos.

●ConcreteFactory : Implementa las operaciones que crean objetos producto concretos.

●AbstractProduct : Declara una interface para un tipo de objeto producto.

●ConcreteProduct, Product : Define un objeto producto que será creado por el

correspondiente ConcreteFactory.

●Client : Usa sólo interfaces declaradas por AbstractFactory y AbstractProduct.

Colaboraciones :

●Normalmente una única instancia de ConcreteFactory es creada en tiempo de ejecución.

●Para crear diferentes objetos producto, los clientes deben usar diferentes

ConcreteFactory.

●AbstractFactory delega la creación de objetos producto a sus subclases

ConcreteFactory.

●ConcreteFactory crea objetos producto teniendo una implementación particular.

Page 4: Abstract Factory -Design Pattern - GoF

Patrones de Diseño – Abstract Factory

Consecuencias :●Aisla las clases concretas.

●Ayuda a controlar las clases de objetos que una aplicación crea.

●Encapsula la responsabilidad y el proceso de creación de los objetos producto, aislando

a los clientes de la implementación de clases.

●El cliente manipula las instancias a través de sus interfaces abstractas.

●Hace fácil el intercambio de familias de objetos producto sin mezclarse, permitiendo

configurar un sistema con una familia de objetos producto de entre varias.

●Promueve la consistencia entre objetos producto.

●Soporte para nuevos tipos de objetos producto es difícil, dado que la interface

AbstractFactory arregla el bloque de productos que pueden ser creados.

●Para soportar nuevos tipos de objetos producto seria necesario hacer cambios o

extender AbstractFactory y sus subclases.

●Una posible solución consistiría en pasar un parámetro al método de creación de

objetos producto, sin embargo se considera una técnica no segura.