SlideShare una empresa de Scribd logo
1 de 13
ABSTRACT FACTORY PATTERN


             Juan Lizaldes
             Gabriel Requelme
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.
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.
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.
Estructura
Participantes
o 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.
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.
Consecuencias
o 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.
Implementación
o 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.
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.
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
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

Más contenido relacionado

La actualidad más candente

Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
Marvin Zumbado
 
95878125 sitema-de-farmacia
95878125 sitema-de-farmacia95878125 sitema-de-farmacia
95878125 sitema-de-farmacia
Zuri At
 
Constructores en java(grupo 8)
Constructores en java(grupo 8)Constructores en java(grupo 8)
Constructores en java(grupo 8)
Manuel Ch.
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
Micky Jerzy
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
Giancarlo Aguilar
 
13 Clase Flujo De Analisis
13 Clase Flujo De Analisis13 Clase Flujo De Analisis
13 Clase Flujo De Analisis
Julio Pari
 
51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software
Miguel Angel Rodriguez
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
landeta_p
 

La actualidad más candente (20)

Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
RUP - Fase de Elaboración
RUP - Fase de ElaboraciónRUP - Fase de Elaboración
RUP - Fase de Elaboración
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
analisis de aplicaciones web
analisis de aplicaciones webanalisis de aplicaciones web
analisis de aplicaciones web
 
Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)
 
Abstract factory
Abstract factoryAbstract factory
Abstract factory
 
95878125 sitema-de-farmacia
95878125 sitema-de-farmacia95878125 sitema-de-farmacia
95878125 sitema-de-farmacia
 
Constructores en java(grupo 8)
Constructores en java(grupo 8)Constructores en java(grupo 8)
Constructores en java(grupo 8)
 
Modelo Requistos
Modelo RequistosModelo Requistos
Modelo Requistos
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdf8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdf
 
Exposición Diagrama de Clases
Exposición Diagrama de ClasesExposición Diagrama de Clases
Exposición Diagrama de Clases
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
13 Clase Flujo De Analisis
13 Clase Flujo De Analisis13 Clase Flujo De Analisis
13 Clase Flujo De Analisis
 
51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software
 
Sem 8 Modelo De Analisis
Sem 8 Modelo De AnalisisSem 8 Modelo De Analisis
Sem 8 Modelo De Analisis
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 

Similar a Abstract Factory

Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentación
avidal020
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo
2008PA2Info3
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
2008PA2Info3
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
2008PA2Info3
 

Similar a Abstract Factory (20)

Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentación
 
Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentación
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Abstract Factory -Design Pattern - GoF
Abstract Factory -Design Pattern - GoFAbstract Factory -Design Pattern - GoF
Abstract Factory -Design Pattern - GoF
 
Patrones
PatronesPatrones
Patrones
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
 
Patrones de Diseño
Patrones de DiseñoPatrones de Diseño
Patrones de Diseño
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
INFOGRAFIA.pdf
INFOGRAFIA.pdfINFOGRAFIA.pdf
INFOGRAFIA.pdf
 
Patrones estructurados
Patrones estructuradosPatrones estructurados
Patrones estructurados
 
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
Msdn Webcast   InyeccióN De Dependencias Con Spring FrameworkMsdn Webcast   InyeccióN De Dependencias Con Spring Framework
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
 
Patrones de Diseño. (Design Patterns).pdf
Patrones de Diseño. (Design Patterns).pdfPatrones de Diseño. (Design Patterns).pdf
Patrones de Diseño. (Design Patterns).pdf
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patrones De DiseñO
Patrones De DiseñOPatrones De DiseñO
Patrones De DiseñO
 

Último

TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Último (20)

Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 

Abstract Factory

  • 1. ABSTRACT FACTORY PATTERN Juan Lizaldes Gabriel Requelme
  • 2. 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.
  • 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. 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.
  • 6.
  • 7. Participantes o 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.
  • 8. 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.
  • 9. Consecuencias o 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.
  • 10. Implementación o 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.
  • 11. 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.
  • 12. 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
  • 13. 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