Sei sulla pagina 1di 25

Patrones de Diseño

Creacionales
Object Abstract
Builder
Pool Factory

Factory
Prototype Singleton
Method
Patrones Creacionales

• Abstraen el proceso de instanciación.

• Hacen al sistema independiente de las creaciones de

objetos.

• Encapsulan conocimiento sobre las clases concretas

usadas por el sistema.


Singleton (Instancia Única)

• Su intención consiste en garantizar que una clase


sólo tenga una instancia y proporcionar un punto de
acceso global a ella.

• Todos los objetos que utilizan una instancia de una


Clase Singleton utilizan la misma instancia.
Singleton (Instancia Única)
Ventajas
– Una clase Singleton puede controlar cómo y cuando el
código cliente puede acceder a la única instancia.

– El código cliente no tiene la libertad de utilizar el operador


new para crear instancias de la clase Singleton.

– Una clase Singleton puede ser modificada fácilmente si los


requerimientos cambian.
Singleton
Estructura

Singleton • Participantes:
– Define una operación
“instance” que permite a
static instance() los clientes acceder a la
singletonOperation()
getSingletonData() única instancia
• Colaboraciones
– Los clientes acceden a la
instancia única a través
static uniqueInstance
singletonData de la operación
“instance”
Object Pool
Aplicaciones
• Object Pools se utilizan para gestionar el
almacenamiento en caché de objetos.

• Un cliente con acceso a un Object Pool puede


evitar la creación de nuevos objetos.

• El manejo del Object Pool debe ser diseñado


para ser una Clase Singleton.
Object Pool
Funcionamiento
– El Object Pool deja que se utilicen (checkout) objetos
del Pool. Cuando no son más utilizados por el proceso
que hizo el checkout, éstos son devueltos al Pool, con
el fin de ser reutilizados.
– El Object Pool también instancia nuevos objetos
cuando son requeridos (objetos se encuentran en
uso), pero debe implementar una forma sencilla de
limpiar objetos sin usar.
Estructura
La idea general para el patrón Connection Pool es que si las instancias de una
clase pueden ser reutilizadas, se evite crear nuevas instancias de la clase
reutilizándolas.

•<strong>Reusable</strong> - Instancias de las clases con este rol, colaboran


con otros objetos durante un tiempo limitado, entonces ya no son necesarios
para la colaboración.
•<strong>Client</strong> - Instancias de las clases con este rol, son objetos
reutilizables.
•<strong>ReusablePool</strong> - Instancias de las clases con este
rol, administran los objetos Reusable para uso de los objetos Cliente.
Ejemplo
Para aquellos que no sepan, para jugar bowling se debe cambiar los zapatos.
El mostrador para zapatos es un excelente ejemplo de Object Pool. Cuando se
desea jugar, se obtiene un par (acquareReusable) de éste. Después del juego
se retornan los zapatos al mostrador (releaseReusable).
Builder (Constructor Virtual)

• Su objetivo principal es el de separar la


construcción de un objeto complejo de su
representación, de forma que el mismo
proceso de construcción pueda crear
diferentes representaciones.
Builder
Estructura

• Builder • Director

– interfaz abstracta para crear – construye un objeto usando el

productos. patrón Builder

• Producto
• Concrete Builder
– El objeto complejo bajo
– implementación del Builder
construcción
Builder (Constructor Virtual)
Ventajas
– Reduce el acoplamiento.

– Permite variar la representación interna de


estructuras compleja, respetando la interfaz común
de la clase Builder.

– Se independiza el código de construcción de la


representación.
Builder
Implementación

• Típicamente hay una clase abstracta Builder (o


interfaz) que define una operación para crear cada
componente.

• Las clases concretas sobrecargan esas operaciones.

• No hay clase abstracta para el producto debido a que


éstos pueden variar mucho.
Factory Method (Método de
Fabricación)
• Define una interfaz para crear un objeto, pero deja
que sean las subclases quienes decidan qué clase
instanciar.

• Permite que una clase delegue en sus subclases la


creación de objetos.
Factory Method
Aplicabilidad
– Una clase no – Se necesita que las
puede anticipar la subclases
clase de objetos especifiquen los
que debe crear. objetos a ser creados
Factory Method
Estructura

Producto Creator Participantes:


operacion() factoryMethod() • Producto
• ProductoConcreto
• Creador
ProductoConcreto CreadorConcreto
• CreadorConcreto
operacion() factoryMethod()
Colaboraciones:
• El patrón Creator delega en
las subclases la creación de
los objetos.
Abstract Factory (Fabrica Abstracta)

• Permite crear objetos de un conjunto de clases


relacionadas pero sin especificar la clase
concreta, solo el interfaz.

• Provee una interfaz para crear familias de


objetos relacionados sin especificar sus clases
concretas
Abstract Factory
Aplicabililidad
•Un sistema debe ser independiente de como
sus productos son creados, compuestos y
representados.
•Un sistema debe ser configurado con una de
múltiples familias de productos.
•Una familia de objetos relacionados está
diseñada para ser usados conjuntamente.
Abstract Factory
Estructura
Estructura
• Cliente: La clase que llamará a la factoría adecuada ya que necesita crear

uno de los objetos que provee la factoría,.

• AbstractFactory: Es de definición de la interfaces de las factorías.

• Factorías Concretas: Estas son las diferentes familias de productos.

• Producto abstracto: Definición de las interfaces para la familia de

productos genéricos. En el diagrama son "ProductoA" y "ProductoB.

• Producto concreto: Implementación de los diferentes productos.


Prototype (Prototipo)

• Tiene como finalidad crear nuevos objetos


duplicándolos, clonando una instancia creada
previamente.

• Este patrón especifica la clase de objetos a crear


mediante la clonación de un prototipo que es una
instancia ya creada.
Prototype
Estructura

• Cliente: Es el encargado de solicitar la creación de los nuevos objetos a partir de


los prototipos.

• Prototipo Concreto: Posee una características concretas que serán reproducidas


para nuevos objetos.

• Prototipo: Declara una interfaz para clonarse, a la que accede el cliente.


Prototype
Aplicaciones
• Útil en escenarios donde es preciso abstraer la lógica
que decide qué tipos de objetos utilizará una
aplicación.
• Las clases a instanciar se especifican en tiempo de
ejecución.
• Para evitar una jerarquía de fábricas paralelas a la
jerarquía de productos.
En el caso, por ejemplo, de un editor gráfico, podemos crear
rectángulos, círculos, etc... como copias de prototipos. Estos
objetos gráficos pertenecerán a una jerarquía cuyas clases
derivadas implementarán el mecanismo de clonación.

Potrebbero piacerti anche