martes, 11 de diciembre de 2012

Patrón de diseño Abstract Factory

Es una patrón de diseño creacional, su misión es crear familias de productos. En el ejemplo tenemos unas serie de productos (chasis, motor, choche), cada una tiene piezas de distintas marcas. Con Abstract Factory tenemos factorías concretas que crean los productos para una marca de coches determinada.


Cliente (Cliente): llamada a una factoría para que devuelva instancias de los productos.

AbstractFactory (CocheFactory): interfaz de las distintas factorías. Debe definir distintos métodos para obtener las distintos productos.

Factorías concretas (CocheFordF, CocheToyotaF): implementa una factoría por cada familia de productos. Se encargan de crear cada una de las familias de productos. En el ejemplo cada familia crear las piezas para una marca determinada de coche. Cada método crear suele devolver un objeto de tipo Producto (ejemplo Chasis, Motor o Coche (ya ensamblado)).

Producto Abstracto (Chasis, Motor, Coche): interfaz para cada familia de productos. En el ejemplo: Chasis, Motor, Coche.

Producto Concreto (ChasisToyota, ChasisFord, MotorToyota,...): implementa cada uno de los productos.


La ventaja de este patrón es que aislamos al cliente de la creación de todos los productos según la familia. También ocultamos la implementación de cada uno de los productos y la creación de sus familias.

Otro ejemplo podría ser la creación de interfaces gráficas. Podríamos tener una serie de elementos gráficos como ventanas y botones que según el sistema operativo su implementación es diferente. Tendríamos una factoría concreta por cada sistema operativo (Window, OSX, Linux,...).

No hay comentarios:

Publicar un comentario