Todo lo que acabas de ver en este artículo es solo una pequeña parte del libro Introducción a los patrones de diseño, el libro más completo de patrones de diseño en español, abarcamos 25 patrones de diseño junto con 25 proyectos del mundo real. Olvídate de aprender patrones de diseño con los ejemplos típicos de Internet de cómo hacer una pizza, animales y figuras geométricas. te invito a que veas mi libro:
Ver libroObject Pool
Patrón de diseño creacionalEste es un patrón 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.
Los componentes que conforman el patrón son los siguientes:
- IObjectPool: 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 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.
- El cliente solicita un objeto al ConcreteObjectPool .
- El ConcreteObjectPool valida si existen objetos disponibles, de no ser así solicitará la creación de un nuevo objeto al ConcreteObjectFactory.
- El ConcreteObjectFactory creará un nuevo objeto de tipo ConcretePoolableObject.
- El ConcreteObjectPool regresará el objeto al cliente.
- El cliente realiza cualquier acción con el objeto.
- El cliente regresa el objeto al ConcreteObjectPool.
Ejemplo del mundo real
Mediante la implementación del patrón de diseño Object Pool desarrollaremos una aplicación multi hilos que controlará muchos procesos de forma simultánea. Dichos procesos estarán controlados por un Object Pool que limitará el número de proceso que pueden ser ejecutados a la vez, con la finalidad de no agotar los recursos del servidor y procesar de forma simultanea el número adecuado de proceso que no afecten el rendimiento, dejando el resto de procesos en una cola de espera que serán procesados una vez que llegue su turno.
¿Sabes la importancia de los patrones de diseño?
Los patrones de diseño son la clave para crecer profesionalmente hacia la arquitectura de software, sin mencionar que los salarios son los más altos de la industria de IT, descúbrelo en este video.