SlideShare una empresa de Scribd logo
ABSTRACT FACTORY/KIT Alejandro Vidal Arcas Ampliación de Programación Orientada a Objetos Curso 2010-2011
Propósito Proporciona una interfaz para crear familias de objetos relacionados o que dependen entre sí, sin especificar sus clases concretas. CREACIÓN DE OBJETOS
Motivación Pensemos un toolkit que admite múltiples estándares de interfaz de usuario y es programado en una interfaz en particular, su portabilidad y su modificación se complica.   Solución: Una clase abstracta que declara una interfaz para crear  cada tipo de básico de widget. Una clase abstracta para cada tipo de widget. Las subclases concretas implementan widgets para un estándar concreto de interfaz de usuario. Los usuarios llaman a esta clase abstracta sin ser conscientes que clase concreta se está usando, de esta manera se consigue una independencia entre cliente y interfaz de usuario.
Motivación
Aplicabilidad Un sistema debe ser independiente de cómo se crean, componen y representan sus productos. Un sistema debe ser configurado con una familia de productos de entre varias. Una familia de objetos producto relacionados está diseñada para ser usada conjuntamente y es necesario hacer cumplir esta restricción Quiere proporcionar una biblioteca de clases de productos y sólo quiere revelar sus interfaces no sus implementaciones.
Estructura
Participantes AbstactFactory: declara una interfaz para operaciones que crean objetos, productos abstractos. ConcreteFactory: implementa las operaciones para crear objetos, productos concretos. AbstractProduct: declara una interfaz para un tipo de objeto producto.
Participantes Product: define un objeto producto para que sea creado por la fábrica correspondiente. Implementa la interfaz AbstractProduct. Cliente: sólo usa interfaces declaradas por las clases AbstractFactory y AbstractProduct.
Colaboraciones Normalmente sólo se crea una única instancia de una clase ConcreteFactory en tiempo de ejecución. Esta fábrica concreta crea objetos producto que tienen una determinada implementación. Para crear diferentes objetos producto, los clientes deben usar una fábrica concreta diferente. AbstractFactory delega la creación de objetos producto en su subclase ConcreteFactory.
Consecuencias Ventajas: Aísla las clases concretas: ayuda a controlar los objetos  que se creen y encapsula la responsabilidad y el proceso de creación de objetos producto. Facilita el intercambio de familias de productos sin mezclarse, permitiendo configurar un sistema con una de entre varias familias de productos. Fomenta la consistencia entre productos.
Consecuencias Desventajas: Es difícil dar cabida a nuevos tipos de productos, esto se debe a que la interfaz AbstractFactory fija el conjunto de productos que se pueden crear. Permitir nuevos tipos de productos requiere ampliar la interfaz de la fábrica, cambiar la clase AbstractFactory  y todas sus subclases.
Implementación Fábricas únicas: una instancia de una ConcreteFactory por cada familia de productos, suele implementarse mejor como un Singleton. Creación de productos: el modo más común para crear las subclases Product (producto concreto) es definiendo un método de fabricación para cada producto(FactoryMethod).     En caso de que sea posible tener muchas familias de productos, la fábrica concreta puede implementarse usando el patrón Prototype. Definir fabricas extensibles: añadiendo un parámetro en las operaciones de creación que indique el tipo de objeto a crear: mas flexible y menos seguro.
Usos conocidos  Los WidgetKit y DialogKit usan abstractfactory para el manejo de interfaz de usuario. ET++ usa el patrón AbstractFactory para lograr portabilidad entre varios sistemas de ventanas(por ejemplo, X Windows y Sun View).
Patrones relacionados

Más contenido relacionado

La actualidad más candente

Método fabrica (Method Factory)
Método fabrica (Method Factory)Método fabrica (Method Factory)
Método fabrica (Method Factory)
Jonathan Calero
 
CLASE SWING
CLASE SWING CLASE SWING
CLASE SWING
José Santos Tenorio
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
Autentia
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
Yaskelly Yedra
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creación
Autentia
 
Patron creacional singleton
Patron creacional singletonPatron creacional singleton
Patron creacional singleton
Polo Fernando Paredes Rodriguez
 
Patrones de diseño y frameworks
Patrones de diseño y frameworksPatrones de diseño y frameworks
Patrones de diseño y frameworks
Daniel Cam Urquizo
 
Patron de diseño builder
Patron de diseño builderPatron de diseño builder
Patron de diseño builder
Salvador Guerrero
 
Patron fachada...
Patron fachada...Patron fachada...
Patron fachada...
Ana Arroyave
 
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: Prototype
Patrones de Diseño: PrototypePatrones de Diseño: Prototype
Patrones de Diseño: Prototype
Carlos Lázaro Mauricio
 
Patrones comportamiento
Patrones comportamientoPatrones comportamiento
Patrones comportamiento
Juan Camilo
 
Awt
AwtAwt
Patrones
PatronesPatrones
Patrones
htinajero
 
Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)
Fanny Ruiz
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoF
juansoto86
 
Elementos Swing
Elementos SwingElementos Swing
Elementos Swing
Manuel Rivas Coronel
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
Iker Canarias
 
Diferencias swing y awt
Diferencias swing y awtDiferencias swing y awt
Diferencias swing y awt
Juan David Franco
 
Expo 2 parametros
Expo 2   parametrosExpo 2   parametros
Expo 2 parametros
Juan Lopez Restrepo
 

La actualidad más candente (20)

Método fabrica (Method Factory)
Método fabrica (Method Factory)Método fabrica (Method Factory)
Método fabrica (Method Factory)
 
CLASE SWING
CLASE SWING CLASE SWING
CLASE SWING
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creación
 
Patron creacional singleton
Patron creacional singletonPatron creacional singleton
Patron creacional singleton
 
Patrones de diseño y frameworks
Patrones de diseño y frameworksPatrones de diseño y frameworks
Patrones de diseño y frameworks
 
Patron de diseño builder
Patron de diseño builderPatron de diseño builder
Patron de diseño builder
 
Patron fachada...
Patron fachada...Patron fachada...
Patron fachada...
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
Patrones de Diseño: Prototype
Patrones de Diseño: PrototypePatrones de Diseño: Prototype
Patrones de Diseño: Prototype
 
Patrones comportamiento
Patrones comportamientoPatrones comportamiento
Patrones comportamiento
 
Awt
AwtAwt
Awt
 
Patrones
PatronesPatrones
Patrones
 
Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoF
 
Elementos Swing
Elementos SwingElementos Swing
Elementos Swing
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Diferencias swing y awt
Diferencias swing y awtDiferencias swing y awt
Diferencias swing y awt
 
Expo 2 parametros
Expo 2   parametrosExpo 2   parametros
Expo 2 parametros
 

Similar a Abstract factory. presentación

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 GOF
Patrones GOFPatrones GOF
Patrones De DiseñO
Patrones De DiseñOPatrones De DiseñO
Patrones De DiseñO
gueste39de6
 
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
 
Vn-Desarrollo
Vn-DesarrolloVn-Desarrollo
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
BenaventeSolorzanoCa
 
Patron Fabrica Abstracta
Patron Fabrica AbstractaPatron Fabrica Abstracta
Patron Fabrica Abstracta
Camila Arbelaez
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
Luis Gutierrez
 
INFOGRAFIA.pdf
INFOGRAFIA.pdfINFOGRAFIA.pdf
INFOGRAFIA.pdf
FranciscoZurisaddaiM
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
Astrid Bermudez
 
Contenedores de IoC - Autofac
Contenedores de IoC - AutofacContenedores de IoC - Autofac
Contenedores de IoC - Autofac
Santiago Porras Rodríguez
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
William A. Molina
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
Juanes Alzt
 
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
Gabriel Oliva
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
ale abad aguilar
 
Patrones estructurados
Patrones estructuradosPatrones estructurados
Patrones estructurados
Ismael Armijos
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
Israel Rey
 
Proceso unificado de desarrollo de software
Proceso unificado de desarrollo de softwareProceso unificado de desarrollo de software
Proceso unificado de desarrollo de software
JUAN PABLO BATISTELA
 
Clase 19 programación en base a patrones
Clase 19 programación en base a patronesClase 19 programación en base a patrones
Clase 19 programación en base a patrones
Pablo Andres Cáceres Ferreira
 
Patronesdediseo 160927143256 (1)
Patronesdediseo 160927143256 (1)Patronesdediseo 160927143256 (1)
Patronesdediseo 160927143256 (1)
ale abad aguilar
 

Similar a Abstract factory. presentación (20)

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
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
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
 
Vn-Desarrollo
Vn-DesarrolloVn-Desarrollo
Vn-Desarrollo
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
 
Patron Fabrica Abstracta
Patron Fabrica AbstractaPatron Fabrica Abstracta
Patron Fabrica Abstracta
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
 
INFOGRAFIA.pdf
INFOGRAFIA.pdfINFOGRAFIA.pdf
INFOGRAFIA.pdf
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Contenedores de IoC - Autofac
Contenedores de IoC - AutofacContenedores de IoC - Autofac
Contenedores de IoC - Autofac
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
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-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
Patrones estructurados
Patrones estructuradosPatrones estructurados
Patrones estructurados
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Proceso unificado de desarrollo de software
Proceso unificado de desarrollo de softwareProceso unificado de desarrollo de software
Proceso unificado de desarrollo de software
 
Clase 19 programación en base a patrones
Clase 19 programación en base a patronesClase 19 programación en base a patrones
Clase 19 programación en base a patrones
 
Patronesdediseo 160927143256 (1)
Patronesdediseo 160927143256 (1)Patronesdediseo 160927143256 (1)
Patronesdediseo 160927143256 (1)
 

Abstract factory. presentación

  • 1. ABSTRACT FACTORY/KIT Alejandro Vidal Arcas Ampliación de Programación Orientada a Objetos Curso 2010-2011
  • 2. Propósito Proporciona una interfaz para crear familias de objetos relacionados o que dependen entre sí, sin especificar sus clases concretas. CREACIÓN DE OBJETOS
  • 3. Motivación Pensemos un toolkit que admite múltiples estándares de interfaz de usuario y es programado en una interfaz en particular, su portabilidad y su modificación se complica. Solución: Una clase abstracta que declara una interfaz para crear cada tipo de básico de widget. Una clase abstracta para cada tipo de widget. Las subclases concretas implementan widgets para un estándar concreto de interfaz de usuario. Los usuarios llaman a esta clase abstracta sin ser conscientes que clase concreta se está usando, de esta manera se consigue una independencia entre cliente y interfaz de usuario.
  • 5. Aplicabilidad Un sistema debe ser independiente de cómo se crean, componen y representan sus productos. Un sistema debe ser configurado con una familia de productos de entre varias. Una familia de objetos producto relacionados está diseñada para ser usada conjuntamente y es necesario hacer cumplir esta restricción Quiere proporcionar una biblioteca de clases de productos y sólo quiere revelar sus interfaces no sus implementaciones.
  • 7. Participantes AbstactFactory: declara una interfaz para operaciones que crean objetos, productos abstractos. ConcreteFactory: implementa las operaciones para crear objetos, productos concretos. AbstractProduct: declara una interfaz para un tipo de objeto producto.
  • 8. Participantes Product: define un objeto producto para que sea creado por la fábrica correspondiente. Implementa la interfaz AbstractProduct. Cliente: sólo usa interfaces declaradas por las clases AbstractFactory y AbstractProduct.
  • 9. Colaboraciones Normalmente sólo se crea una única instancia de una clase ConcreteFactory en tiempo de ejecución. Esta fábrica concreta crea objetos producto que tienen una determinada implementación. Para crear diferentes objetos producto, los clientes deben usar una fábrica concreta diferente. AbstractFactory delega la creación de objetos producto en su subclase ConcreteFactory.
  • 10. Consecuencias Ventajas: Aísla las clases concretas: ayuda a controlar los objetos que se creen y encapsula la responsabilidad y el proceso de creación de objetos producto. Facilita el intercambio de familias de productos sin mezclarse, permitiendo configurar un sistema con una de entre varias familias de productos. Fomenta la consistencia entre productos.
  • 11. Consecuencias Desventajas: Es difícil dar cabida a nuevos tipos de productos, esto se debe a que la interfaz AbstractFactory fija el conjunto de productos que se pueden crear. Permitir nuevos tipos de productos requiere ampliar la interfaz de la fábrica, cambiar la clase AbstractFactory y todas sus subclases.
  • 12. Implementación Fábricas únicas: una instancia de una ConcreteFactory por cada familia de productos, suele implementarse mejor como un Singleton. Creación de productos: el modo más común para crear las subclases Product (producto concreto) es definiendo un método de fabricación para cada producto(FactoryMethod). En caso de que sea posible tener muchas familias de productos, la fábrica concreta puede implementarse usando el patrón Prototype. Definir fabricas extensibles: añadiendo un parámetro en las operaciones de creación que indique el tipo de objeto a crear: mas flexible y menos seguro.
  • 13. Usos conocidos  Los WidgetKit y DialogKit usan abstractfactory para el manejo de interfaz de usuario. ET++ usa el patrón AbstractFactory para lograr portabilidad entre varios sistemas de ventanas(por ejemplo, X Windows y Sun View).