Abstract Factory

1,842 views
1,672 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,842
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
60
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Abstract Factory

  1. 1. ABSTRACT FACTORY PATTERN Juan Lizaldes Gabriel Requelme
  2. 2. IntroducciónAbstract Factory es una clase que provee un medio paraproducir una familia de objetos. Es un patrón de diseño parael desarrollo de software. También conocido como Kit oToolkit. PROPÓSITOProvee una interfaz para la creación de objetos relacionadoso dependientes, sin especificar sus clases concretas.
  3. 3. Motivación• Su objetivo es soportar múltiples estándares.• Extensible para futuros estándares.• Separar la construcción de un objeto complejo de su representación de modo que el mismo proceso de construcción pueda crear diferentes representaciones. Los objetos que dependen de un algoritmo tendrán que cambiar cuando el algoritmo cambia. Por lo tanto los algoritmos que estén expuestos a dicho cambio deberían ser separados, permitiendo de esta manera reutilizar algoritmos para crear diferentes representaciones.
  4. 4. APLICABILIDAD• Para sistemas independientes de cómo se crean, componen y representan sus productos• Para sistemas que pueden configurarse con una de varias familias de productos• Una familia de objetos producto relacionados está diseñada para ser usada conjuntamente y es necesario hacer cumplir esa restricción.• Para ofrecer una librería de clases, mostrando sólo sus interfaces y no sus implementaciones.
  5. 5. Estructura
  6. 6. Participanteso AbstractFactory. Declara una interfaz para operaciones que crean objetos producto abstractos.o ConcreteFactory. Implementa las operaciones para crear objetos producto concretos.o AbstractProduct. Declara una interfaz para un tipo de objeto producto.o Product. Define un objeto producto para que sea creado por la fábrica correspondiente. Implementa la interface Product.o Client. Sólo usa interfaces declaradas por las clases AbstractFactory y AbstractProduct.
  7. 7. 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.
  8. 8. 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 una familia completa de objetos con una factoría abstracta, es fácil cambiar toda la familia de una vez simplemente cambiando la factoría concreta.o Promueve la consistencia entre productos. El uso de la factoría abstracta permite forzar a utilizar un conjunto de objetos de una misma familia.o No es fácil soportar nuevos tipos de productos. (Desventaja). Si se tiene que extender la interfaz de la Factoría abstracta.
  9. 9. Implementacióno Fábricas como Singletons: normalmente se usa una sola instancia de fábrica concreta.o Creación de productos: la fábrica abstracta deja que las subclases creen los productos redefiniendo las operaciones de creación.o Definir fábricas extensibles: para evitar la dependencia de la interfaz de las fábricas de los nuevos productos se puede tener un catálogo de prototipos.
  10. 10. Usos Conocidos• ET++ usa Abstract Factory para archivar portablemente sobre diferentes sistemas windows (X Windows y SunView)• La clase base abstracta de WindowsSystem define la interfaz para crear objetos que representan recursos del sistema windows.• Las clases Button y MenuItem de Java facilitan la utilización de este patrón, declaran los métodos getActionCommand y setActionCommand para dar nombres a las acciones realizadas por los objetos, facilitándose una correspondencia entre ambos.
  11. 11. Patrones relacionados• Se pueden implementar con Factory Method o Prototype.• Las factorías concretas suelen ser Singleton. CÓDIGO DE EJEMPLOhttp://www.mediafire.com/?8cngd0n88r4wia4
  12. 12. 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

×