SlideShare una empresa de Scribd logo
Patrones de creación 
AUTENTIA.COM 
Sara Subijana Gracia 
Madrid, 29 de Julio de 2014
Índice 
● Patrones GoF. Origen 
● Patrones de creación. Introducción 
● Abstract factory 
● Builder 
● Factory method 
● Object pool 
● Prototype 
● Singleton 
● Preguntas
Patrones GoF - Origen 
● GoF: Gang of Four (Erich Gamma, Richard Helm, Ralph Johnson, John 
Vlissides). 
● Elaboraron el manual Design Patterns: Elements of reusable object-oriented 
software [1994]. 
● Soluciones generales a problemas habituales en el diseño software 
con patrones de diseño. 
● Clasificados en: 
○ Patrones de creación 
○ Patrones estructurales 
○ Patrones de comportamiento 
○ Patrones de partición 
○ Patrones de concurrencia
Patrones de creación - Introducción 
● Facilitan el proceso de creación del sistema. 
○ Abstracción del proceso de instanciación. 
○ Sistema independiente de las creaciones de objetos. 
○ Encapsulación del comportamiento de las clases. 
○ Ocultan cómo las clases se “comunican” entre sí. 
● Son patrones de creación: 
○ Abstract factory 
○ Builder 
○ Factory method 
○ Object pool 
○ Prototype 
○ Singleton 
● Algunos patrones son complementarios: Builder, Prototype.
Patrones de creación - Abstract Factory 
● Proporciona una interfaz para crear familias de objetos sin especificar 
las clases a las que pertenecen. 
● Uso de una clase factoría que es la que crea los objetos de las distintas 
familias. 
● El cliente instancia la clase factoría siendo transparente para él el tipo 
del objeto creado. 
● La factoría es la que conoce el tipo de objeto creado.
Patrones de creación - Abstract Factory
Patrones de creación - Builder 
● Separa la construcción del objeto de su representación. 
● Implementación del proceso de construcción consigue crear varias 
representaciones de objetos. 
● Elementos que intervienen 
○ Builder: interfaz abstracta que crea productos. 
○ Builder concreto: implementación concreta del builder que crea 
productos. 
○ Director: utiliza la clase builder para crear los objetos.
Patrones de creación - Factory method 
● Define una interfaz para la creación de objetos. 
● Permite que sean las subclases las que determinen la clase a instanciar. 
● Una superclase puede delegar en sus hijas la creación de objetos. 
● Elementos: 
○ Creator: define el método para la creación de objetos. 
○ Concrete creator: redefine el método de creación para devolver 
instancias de un producto concreto. 
○ Producto: resultado del método de creación.
Patrones de creación - Factory method 
● Ventajas: 
○ Asignar nombres descriptivos a los métodos de construcción. 
○ Encapsular el proceso de construcción. 
● Uso muy popular: método constructor estático que devuelve instancias 
de producto.
Patrones de creación - Object pool 
● A veces el coste de instanciar clases es alto y/o el rendimiento de la 
aplicación puede verse afectado. 
● Object pool: objetos que pueden reutilizarse bajo demanda en vez de 
crear nuevas instancias. 
● Funcionamiento: 
○ Demanda de un nuevo objeto al pool. 
○ Una vez que el objeto ha sido utilizado, se devuelve. 
○ En el caso de que no haya instancias libres, el pool crea nuevas. 
○ Debe implementarse un mecanismo de liberación de instancias.
Patrones de creación - Prototype 
● Crea nuevos objetos clonando una instancia creada previamente. 
● A la instancia creada se le llama prototipo. 
● Propone crear los objetos en el momento y contexto adecuado (p.e 
editor gráfico). 
● Elementos: 
○ Cliente: encargado de solicitar la creación de nuevos objetos. 
○ Prototipo: declaración de una interfaz para clonarse a la que accede 
el cliente. 
○ Prototipo concreto: implementa el método de clonación.
Patrones de creación - Singleton 
● Una sola instancia de clase proporciona un punto global de acceso a 
ella. 
● Instancia encargada de la creación, inicialización y acceso. 
● La instancia se define como estática y privada. 
● Debe definirse un método de acceso a dicha instancia. 
● Muy utilizado cuando… 
○ La clase debe controlar el acceso a un recurso físico único. 
○ Existen datos que deben estar disponibles para todos los demás 
objetos de la aplicación. 
● Cuidado con los problemas de concurrencia al crear la instancia
Patrones de creación - Y para terminar... 
PREGUNTAS 
¿?

Más contenido relacionado

La actualidad más candente

Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
Consultor Independiente
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
martin
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
Rafael Miranda
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisis
innovalabcun
 
6.modelado de los requerimientos escenarios y clases
6.modelado de los requerimientos  escenarios y clases6.modelado de los requerimientos  escenarios y clases
6.modelado de los requerimientos escenarios y clases
Ramiro Estigarribia Canese
 
Programación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVA
Michelle Torres
 
Exposición Diagrama de Clases
Exposición Diagrama de ClasesExposición Diagrama de Clases
Exposición Diagrama de Clases
Universidad Técnica del Norte
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
Luis Eduardo Aponte
 
Del análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratosDel análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratos
Juan Pablo Bustos Thames
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
programadorjavablog
 
Metodologiasad 1
Metodologiasad 1Metodologiasad 1
Metodologiasad 1
innovalabcun
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
UCE
 
Diagrama de dominio armando
Diagrama de dominio armandoDiagrama de dominio armando
Diagrama de dominio armando
Negrita Ruiz Bruno
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
jose_rob
 
Diagramas De Caso De Uso
Diagramas De Caso De UsoDiagramas De Caso De Uso
Diagramas De Caso De Uso
Miguel Leonardo Sánchez Fajardo
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
yoiner santiago
 
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso RealesUnidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Sergio Sanchez
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
Yorka Marisol Perez Feliz
 
Proceso unificado
Proceso unificadoProceso unificado
Proceso unificado
Yolanda Uruchima
 
Los 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesLos 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentes
Victor Escamilla
 

La actualidad más candente (20)

Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisis
 
6.modelado de los requerimientos escenarios y clases
6.modelado de los requerimientos  escenarios y clases6.modelado de los requerimientos  escenarios y clases
6.modelado de los requerimientos escenarios y clases
 
Programación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVA
 
Exposición Diagrama de Clases
Exposición Diagrama de ClasesExposición Diagrama de Clases
Exposición Diagrama de Clases
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
 
Del análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratosDel análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratos
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
 
Metodologiasad 1
Metodologiasad 1Metodologiasad 1
Metodologiasad 1
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Diagrama de dominio armando
Diagrama de dominio armandoDiagrama de dominio armando
Diagrama de dominio armando
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
Diagramas De Caso De Uso
Diagramas De Caso De UsoDiagramas De Caso De Uso
Diagramas De Caso De Uso
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso RealesUnidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Proceso unificado
Proceso unificadoProceso unificado
Proceso unificado
 
Los 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesLos 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentes
 

Destacado

Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
Juan Camilo
 
Lenguaje De Programación
Lenguaje De ProgramaciónLenguaje De Programación
Lenguaje De Programación
denisse176
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetos
marly alfonso
 
Herramientas IDE - CASE
Herramientas IDE - CASEHerramientas IDE - CASE
Herramientas IDE - CASE
Luis Eduardo Pelaez Valencia
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
Luis Sanchez
 
Modelado, Ingenieria de Software
Modelado, Ingenieria de SoftwareModelado, Ingenieria de Software
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
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
Cesar David Fernandez Grueso
 
Diagramas De Interaccion
Diagramas De InteraccionDiagramas De Interaccion
Diagramas De Interaccion
jlrvpuma
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
still01
 
Diapositivas ciencia, tecnologia y sociedad
Diapositivas ciencia, tecnologia y sociedadDiapositivas ciencia, tecnologia y sociedad
Diapositivas ciencia, tecnologia y sociedad
Paan-Benitez
 
Innovacion Tecnologica
Innovacion TecnologicaInnovacion Tecnologica
Innovacion Tecnologica
Shirley
 
Proyecto de grado
Proyecto de gradoProyecto de grado
Proyecto de grado
Moises Logroño
 
LA NATURALEZA DE LA ACTIVIDAD CIENTÍFICA
LA NATURALEZA DE LA ACTIVIDAD CIENTÍFICALA NATURALEZA DE LA ACTIVIDAD CIENTÍFICA
LA NATURALEZA DE LA ACTIVIDAD CIENTÍFICA
Sandy De La Ossa
 
La tecnología
La tecnologíaLa tecnología
La tecnología
lauragiraldo6
 
Factibilidad Tecnica, Operativa y Economica
Factibilidad Tecnica, Operativa y EconomicaFactibilidad Tecnica, Operativa y Economica
Factibilidad Tecnica, Operativa y Economica
Sistemas UDC
 
Análisis Estadístico
Análisis EstadísticoAnálisis Estadístico
Análisis Estadístico
Agustí Estévez
 

Destacado (17)

Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Lenguaje De Programación
Lenguaje De ProgramaciónLenguaje De Programación
Lenguaje De Programación
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetos
 
Herramientas IDE - CASE
Herramientas IDE - CASEHerramientas IDE - CASE
Herramientas IDE - CASE
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
 
Modelado, Ingenieria de Software
Modelado, Ingenieria de SoftwareModelado, Ingenieria de Software
Modelado, Ingenieria de Software
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Diagramas De Interaccion
Diagramas De InteraccionDiagramas De Interaccion
Diagramas De Interaccion
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Diapositivas ciencia, tecnologia y sociedad
Diapositivas ciencia, tecnologia y sociedadDiapositivas ciencia, tecnologia y sociedad
Diapositivas ciencia, tecnologia y sociedad
 
Innovacion Tecnologica
Innovacion TecnologicaInnovacion Tecnologica
Innovacion Tecnologica
 
Proyecto de grado
Proyecto de gradoProyecto de grado
Proyecto de grado
 
LA NATURALEZA DE LA ACTIVIDAD CIENTÍFICA
LA NATURALEZA DE LA ACTIVIDAD CIENTÍFICALA NATURALEZA DE LA ACTIVIDAD CIENTÍFICA
LA NATURALEZA DE LA ACTIVIDAD CIENTÍFICA
 
La tecnología
La tecnologíaLa tecnología
La tecnología
 
Factibilidad Tecnica, Operativa y Economica
Factibilidad Tecnica, Operativa y EconomicaFactibilidad Tecnica, Operativa y Economica
Factibilidad Tecnica, Operativa y Economica
 
Análisis Estadístico
Análisis EstadísticoAnálisis Estadístico
Análisis Estadístico
 

Similar a Patrones de creación

Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de Diseño
Mario Cabrera
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
Sergio David Fernández
 
Patrones GOF
Patrones GOFPatrones GOF
06 patrones
06 patrones06 patrones
06 patrones
Oswaldo Coronado
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
RochaJaqueline
 
Análisis y Diseño OO 2
Análisis y Diseño OO 2Análisis y Diseño OO 2
Análisis y Diseño OO 2
Jano González
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
BenaventeSolorzanoCa
 
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
millonario2
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
Hector Manuel Vanegas Solis
 
Método fabrica (Method Factory)
Método fabrica (Method Factory)Método fabrica (Method Factory)
Método fabrica (Method Factory)
Jonathan Calero
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
kaolong
 
type object
type objecttype object
type object
Renny Centeno
 
Prototype (patron de disenio)
Prototype (patron de disenio)Prototype (patron de disenio)
Prototype (patron de disenio)
Jhonny Zaruma
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
menttes
 
Patrones Con C#
Patrones Con C#Patrones Con C#
Patrones Con C#
Matias Iacono
 
Taller patrones de diseño
Taller patrones de  diseñoTaller patrones de  diseño
Taller patrones de diseño
tovar1982
 
Patron creacional singleton
Patron creacional singletonPatron creacional singleton
Patron creacional singleton
Polo Fernando Paredes Rodriguez
 
6 3-templates y patrones
6 3-templates y patrones6 3-templates y patrones
6 3-templates y patronesMariano Pereda
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseño
Software Guru
 
Patron Metodo Fabrica
Patron Metodo FabricaPatron Metodo Fabrica
Patron Metodo Fabrica
Camila Arbelaez
 

Similar a Patrones de creación (20)

Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de Diseño
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
06 patrones
06 patrones06 patrones
06 patrones
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
Análisis y Diseño OO 2
Análisis y Diseño OO 2Análisis y Diseño OO 2
Análisis y Diseño OO 2
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
 
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
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 
Método fabrica (Method Factory)
Método fabrica (Method Factory)Método fabrica (Method Factory)
Método fabrica (Method Factory)
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
type object
type objecttype object
type object
 
Prototype (patron de disenio)
Prototype (patron de disenio)Prototype (patron de disenio)
Prototype (patron de disenio)
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Patrones Con C#
Patrones Con C#Patrones Con C#
Patrones Con C#
 
Taller patrones de diseño
Taller patrones de  diseñoTaller patrones de  diseño
Taller patrones de diseño
 
Patron creacional singleton
Patron creacional singletonPatron creacional singleton
Patron creacional singleton
 
6 3-templates y patrones
6 3-templates y patrones6 3-templates y patrones
6 3-templates y patrones
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseño
 
Patron Metodo Fabrica
Patron Metodo FabricaPatron Metodo Fabrica
Patron Metodo Fabrica
 

Más de Autentia

Nativescript
NativescriptNativescript
Nativescript
Autentia
 
Patrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoPatrones de diseño: Polimorfismo
Patrones de diseño: Polimorfismo
Autentia
 
Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principle
Autentia
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón Façade
Autentia
 
Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón Decorator
Autentia
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
Autentia
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón Observer
Autentia
 
Singleton
SingletonSingleton
Singleton
Autentia
 
Factory method
Factory methodFactory method
Factory method
Autentia
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de Diseño
Autentia
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezg
Autentia
 

Más de Autentia (11)

Nativescript
NativescriptNativescript
Nativescript
 
Patrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoPatrones de diseño: Polimorfismo
Patrones de diseño: Polimorfismo
 
Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principle
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón Façade
 
Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón Decorator
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón Observer
 
Singleton
SingletonSingleton
Singleton
 
Factory method
Factory methodFactory method
Factory method
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de Diseño
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezg
 

Patrones de creación

  • 1. Patrones de creación AUTENTIA.COM Sara Subijana Gracia Madrid, 29 de Julio de 2014
  • 2. Índice ● Patrones GoF. Origen ● Patrones de creación. Introducción ● Abstract factory ● Builder ● Factory method ● Object pool ● Prototype ● Singleton ● Preguntas
  • 3. Patrones GoF - Origen ● GoF: Gang of Four (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides). ● Elaboraron el manual Design Patterns: Elements of reusable object-oriented software [1994]. ● Soluciones generales a problemas habituales en el diseño software con patrones de diseño. ● Clasificados en: ○ Patrones de creación ○ Patrones estructurales ○ Patrones de comportamiento ○ Patrones de partición ○ Patrones de concurrencia
  • 4. Patrones de creación - Introducción ● Facilitan el proceso de creación del sistema. ○ Abstracción del proceso de instanciación. ○ Sistema independiente de las creaciones de objetos. ○ Encapsulación del comportamiento de las clases. ○ Ocultan cómo las clases se “comunican” entre sí. ● Son patrones de creación: ○ Abstract factory ○ Builder ○ Factory method ○ Object pool ○ Prototype ○ Singleton ● Algunos patrones son complementarios: Builder, Prototype.
  • 5. Patrones de creación - Abstract Factory ● Proporciona una interfaz para crear familias de objetos sin especificar las clases a las que pertenecen. ● Uso de una clase factoría que es la que crea los objetos de las distintas familias. ● El cliente instancia la clase factoría siendo transparente para él el tipo del objeto creado. ● La factoría es la que conoce el tipo de objeto creado.
  • 6. Patrones de creación - Abstract Factory
  • 7. Patrones de creación - Builder ● Separa la construcción del objeto de su representación. ● Implementación del proceso de construcción consigue crear varias representaciones de objetos. ● Elementos que intervienen ○ Builder: interfaz abstracta que crea productos. ○ Builder concreto: implementación concreta del builder que crea productos. ○ Director: utiliza la clase builder para crear los objetos.
  • 8. Patrones de creación - Factory method ● Define una interfaz para la creación de objetos. ● Permite que sean las subclases las que determinen la clase a instanciar. ● Una superclase puede delegar en sus hijas la creación de objetos. ● Elementos: ○ Creator: define el método para la creación de objetos. ○ Concrete creator: redefine el método de creación para devolver instancias de un producto concreto. ○ Producto: resultado del método de creación.
  • 9. Patrones de creación - Factory method ● Ventajas: ○ Asignar nombres descriptivos a los métodos de construcción. ○ Encapsular el proceso de construcción. ● Uso muy popular: método constructor estático que devuelve instancias de producto.
  • 10. Patrones de creación - Object pool ● A veces el coste de instanciar clases es alto y/o el rendimiento de la aplicación puede verse afectado. ● Object pool: objetos que pueden reutilizarse bajo demanda en vez de crear nuevas instancias. ● Funcionamiento: ○ Demanda de un nuevo objeto al pool. ○ Una vez que el objeto ha sido utilizado, se devuelve. ○ En el caso de que no haya instancias libres, el pool crea nuevas. ○ Debe implementarse un mecanismo de liberación de instancias.
  • 11. Patrones de creación - Prototype ● Crea nuevos objetos clonando una instancia creada previamente. ● A la instancia creada se le llama prototipo. ● Propone crear los objetos en el momento y contexto adecuado (p.e editor gráfico). ● Elementos: ○ Cliente: encargado de solicitar la creación de nuevos objetos. ○ Prototipo: declaración de una interfaz para clonarse a la que accede el cliente. ○ Prototipo concreto: implementa el método de clonación.
  • 12. Patrones de creación - Singleton ● Una sola instancia de clase proporciona un punto global de acceso a ella. ● Instancia encargada de la creación, inicialización y acceso. ● La instancia se define como estática y privada. ● Debe definirse un método de acceso a dicha instancia. ● Muy utilizado cuando… ○ La clase debe controlar el acceso a un recurso físico único. ○ Existen datos que deben estar disponibles para todos los demás objetos de la aplicación. ● Cuidado con los problemas de concurrencia al crear la instancia
  • 13. Patrones de creación - Y para terminar... PREGUNTAS ¿?