Sei sulla pagina 1di 3

OBJECT POOL

Definición:
Este es un patrón creacional muy utilizado cuando se requiere trabajar con una gran cantidad
de objetos, los cuales son computacionalmente caros de crear, este patrón tiene una gran
ventaja en escenarios donde nuestro programa requiere dichos objetos por un tiempo muy
corto y que luego de su uso son desechados.
La ventaja que brinda este patrón es que nos permite reutilizar los objetos con el fin de evitar
la tarea de crearlos cada vez que nuestra aplicación los requiere, manteniendo así un almacén
de objetos creados previamente para ser utilizados. [ CITATION Bla16 \l 3082 ]. Pero en
ciertas ocasiones el uso de este patrón es más costoso. [ CITATION Sab15 \l 3082 ].
El patrón Object Pool es parte de este grupo de herramientas de desarrollo de software pero lo
que lo diferencia de los otros es la posesión de características especiales. [ CITATION Mer12
\l 3082 ]. Puede ofrecer un significativo aumento del rendimiento.
Estructura:
Los componentes que conforman el patrón son los siguientes:

 IObjectPool: Es la interface que define la estructura mínima de un Object Pool, en ella


definiremos los métodos “get” y “releace”, los cuales serán utilizados para obtener y
devolver un objeto respectivamente.
 AbstractObjectPool: Clase abstracta que definirá el comportamiento por default
(predeterminado) de un Object Pool, esta clase puede ser utilizada como base para
crear ConcreteObjectPool de una forma muy rápida.
 ConcreteObjectPool: Corresponde a una implementación completa del Object Pool, la
cual está lista para ser utilizada.
 IPoolableObject: Interface que deberá implementar todos los objetos que decimos
administrar por el ObjectPool. En esta interface podemos definir la estructura mínima
que deben de tener los objetos.
 ConcretePoolableObject: Estos son los objetos reales que el ObjectPool administrará,
deberán heredar de IPoolableObject.
 IObjectFactory: Interface que definirá la estructura de la fábrica de objetos
ConcretePoolableObject.
 ConcreteObjectFactory: Fábrica concreta que implementa IObjectFactory para la
creación de objetos ConcretePoolableObject.
Secuencia del patrón de diseño:

1. El cliente solicita un objeto al ConcreteObjectPool  .


2. El ConcreteObjectPool  valida si existen objetos disponibles, de no ser así solicitará la
creación de un nuevo objeto al ConcreteObjectFactory.
3. El ConcreteObjectFactory  creará un nuevo objeto de tipo ConcretePoolableObject.
4. El ConcreteObjectPool  regresará el objeto al cliente.
5. El cliente realiza cualquier acción con el objeto.
6. El cliente regresa al objeto al ConcreteObjectPool[ CITATION Bla16 \l 3082 ].

////////////////////////////////////////////////////////////////////////////////////////////////////

Código y explicación de ian

////////////////////////////////////////////////////////////////////////////////////////////////////

Cuándo usarlo:

Este patrón se usa ampliamente en juegos para cosas obvias como entidades de juego y
efectos visuales, pero también se usa para estructuras de datos menos visibles, como los
sonidos que se están reproduciendo actualmente. Use Object Pool cuando:

 Necesita crear y destruir objetos con frecuencia.


 Los objetos son similares en tamaño.
 La asignación de objetos en el montón es lenta o podría provocar la fragmentación de
la memoria.
 Cada objeto encapsula un recurso como una base de datos o una conexión de red que
es costoso de adquirir y podría reutilizarse.
Análisis:

 Al conocer más a fondo este patrón uno se da cuenta de que funciona de manera
óptima cuando nuestro programa requiere dichos objetos por un tiempo muy corto y
que luego de su uso son desechados.

 El anterior punto nos hace dar cuenta de que puede ser aplicado a una muy variada
gama de situaciones problemáticas a nivel de costo desde una perspectiva
computacional.

Conclusiones:

 En conclusión se puede observar que este patrón sería muy óptimo en la creación de
videojuegos o en una base de datos debido al ahorro de costo o demanda a nivel
computacional de algunas clases creadas.

 Mejora el rendimiento y el uso de la memoria mediante la reutilización


significativamente pero se debe lidiar con las limitaciones del patrón.

 Es una herramienta muy útil que todos deberíamos utilizar. Pero con la razón ya que
pueden no ser tan útiles en casos determinados.

Referencias
Antonio. (11 de 11 de 2014). Codecriticon. Obtenido de Introducción a los Patrones de Diseño :
http://codecriticon.com/introduccion-patrones-diseno/

Blancarte, O. (2016). Patrones de diseño. Obtenido de Object Pool - Introducción a los patrones
de diseño: https://patronesdediseño.com/desing-patterns/object-pool

Drummer, J. (12 de 12 de 2015). Electivaprogram. Obtenido de Object Pool:


http://electivaprogram.blogspot.pe/p/blog-page.html

Fernández, S. (13 de 7 de 2011). Slideshare. Obtenido de Presentacion Patrones Creacionales:


https://es.slideshare.net/XeRGi0/presentacion-8589591

Merino, C. (29 de 11 de 2012). Prezi. Obtenido de Patrones de diseño:


https://prezi.com/cf_ruoq_xbg3/patrones-de-disenos/

Sabbut, V. 2. (18 de 10 de 2015). Wikipedia. Obtenido de Object Pool:


https://es.wikipedia.org/wiki/Object_pool_(patrón_de_diseño)

Potrebbero piacerti anche