abstract factory

13

Click here to load reader

Upload: juan-lizaldes

Post on 04-Jul-2015

1.513 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Abstract Factory

ABSTRACT FACTORY PATTERN

Juan Lizaldes

Gabriel Requelme

Page 2: Abstract Factory

Introducción

Abstract Factory es una clase que provee un medio para

producir una familia de objetos. Es un patrón de diseño para

el desarrollo de software. También conocido como Kit o

Toolkit.

PROPÓSITO

Provee una interfaz para la creación de objetos relacionados

o dependientes, sin especificar sus clases concretas.

Page 3: Abstract Factory

Motivación• Su objetivo es soportar múltiples estándares.

• Extensible para futuros estándares.

• Separar la construcción de un objeto complejo de surepresentación de modo que el mismo proceso deconstrucción pueda crear diferentesrepresentaciones. Los objetos que dependen de unalgoritmo tendrán que cambiar cuando el algoritmocambia. Por lo tanto los algoritmos que esténexpuestos a dicho cambio deberían ser separados,permitiendo de esta manera reutilizar algoritmospara crear diferentes representaciones.

Page 4: Abstract Factory

APLICABILIDAD

• Para sistemas independientes de cómo secrean, componen y representan sus productos

• Para sistemas que pueden configurarse conuna de varias familias de productos

• Una familia de objetos producto relacionadosestá diseñada para ser usada conjuntamente yes necesario hacer cumplir esa restricción.

• Para ofrecer una librería de clases, mostrandosólo sus interfaces y no sus implementaciones.

Page 5: Abstract Factory

Estructura

Page 6: Abstract Factory
Page 7: Abstract Factory

Participanteso AbstractFactory. Declara una interfaz para operaciones que

crean objetos producto abstractos.

o ConcreteFactory. Implementa las operaciones para crearobjetos producto concretos.

o AbstractProduct. Declara una interfaz para un tipo de objetoproducto.

o Product. Define un objeto producto para que sea creado por lafábrica correspondiente. Implementa la interface Product.

o Client. Sólo usa interfaces declaradas por las clasesAbstractFactory y AbstractProduct.

Page 8: Abstract Factory

Colaboraciones• Normalmente se crea una única instancia de la clase

ConcreteFactory que crea productos con una

implementación particular.

• Para crear familias de productos diferentes los

clientes utilizan una determinada fábrica concreta.

• La clase AbstractFactory pospone la creación de

productos a sus subclases ConcreteFactory.

Page 9: Abstract Factory

Consecuenciaso Aísla las clases concretas. Los clientes manipulan los objetos

a través de las interfaces o clases abstractas.

o Facilita el intercambio de familias de productos. Al crear unafamilia completa de objetos con una factoría abstracta, es fácilcambiar toda la familia de una vez simplemente cambiando lafactoría concreta.

o Promueve la consistencia entre productos. El uso de lafactoría abstracta permite forzar a utilizar un conjunto de objetosde una misma familia.

o No es fácil soportar nuevos tipos de productos.(Desventaja). Si se tiene que extender la interfaz de la Factoríaabstracta.

Page 10: Abstract Factory

Implementación

o Fábricas como Singletons: normalmente se usa unasola instancia de fábrica concreta.

o Creación de productos: la fábrica abstracta deja quelas subclases creen los productos redefiniendo lasoperaciones de creación.

o Definir fábricas extensibles: para evitar ladependencia de la interfaz de las fábricas de losnuevos productos se puede tener un catálogo deprototipos.

Page 11: Abstract Factory

Usos Conocidos

• ET++ usa Abstract Factory para archivar portablementesobre diferentes sistemas windows (X Windows ySunView)

• La clase base abstracta de WindowsSystem define lainterfaz para crear objetos que representan recursos delsistema windows.

• Las clases Button y MenuItem de Java facilitan lautilización de este patrón, declaran los métodosgetActionCommand y setActionCommand para darnombres a las acciones realizadas por los objetos,facilitándose una correspondencia entre ambos.

Page 12: Abstract Factory

Patrones relacionados

• Se pueden implementar con Factory

Method o Prototype.

• Las factorías concretas suelen ser

Singleton.

CÓDIGO DE EJEMPLO

http://www.mediafire.com/?8cngd0n88r4wia4

Page 13: Abstract Factory

Bibliografía• Gamma, E., Helm, R., Johnson, R., y Vlissides, J.: Design Patterns:

Elements of Reusable Object-Oriented Software. Addison-Wesley (1995)

• http://www.dosideas.com/wiki/Abstract_Factory

• http://www.programadorphp.org/blog/patrones-de-diseno-elementos-reutilizables-para-la-web/

• http://antares.itmorelia.edu.mx/~jcolivar/courses/dp07a/patrones.pdf

• http://gresh-ross.blogspot.es/

• http://www.fdi.ucm.es/profesor/fpeinado/courses/oop/LPS-06IntroPatrones-B&N.pdf

• http://www.fdi.ucm.es/profesor/jpavon/poo/2.14PDOO.pdf

• http://msdn.microsoft.com/es-mx/library/bb972258.aspx#EDAA

• http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html