Patrones de creación
description
Transcript of Patrones de creación
Patrones de creación
Sara Subijana Gracia
AUTENTIA.COM
Madrid, 29 de Julio de 2014
● Patrones GoF. Origen
● Patrones de creación. Introducción
● Abstract factory
● Builder
● Factory method
● Object pool
● Prototype
● Singleton
● Preguntas
Índice
● 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 GoF - Origen
● 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 - Introducción
● 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 - Abstract Factory
● 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 - Builder
● 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 - Factory method
● 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 - Object pool
● 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 - Prototype
● 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 - Singleton
PREGUNTAS
¿?
Patrones de creación - Y para terminar...