Multithon

Significado de multitono

El patrón singleton es el diseño de una clase de tal manera que restringe la creación de objetos fuera de la clase, pero al mismo tiempo se crea un medio para renderizar su instancia cuando se lo pide el código de llamada. El mismo objeto se sirve para cualquier petición.

Hay muchas versiones de patrones singleton disponibles, por lo que elegir sabiamente en base a tus requerimientos es la clave en la implementación del patrón singleton. Típicamente la clase singleton tiene una sola instancia. Puede haber cualquier número de referencias a objetos, pero sólo existe una instancia de la clase. El siguiente diagrama ilustra la idea básica de singleton

Proporciona el punto de acceso global al objeto Singleton y devuelve la instancia de la clase singleton. Cuando se llama a este método, se comprueba si hay una instancia de la clase singleton disponible. Si no está disponible, crea una instancia. En caso contrario, devuelve la misma referencia de objeto ya creada de la clase.

La operación de creación del objeto se difiere hasta que el método es llamado por primera vez por el código que lo llama. Este enfoque de aplazamiento se denomina instanciación perezosa. Generalmente se utiliza cuando la mejora del rendimiento, la reducción de los impactos en la base de datos, la optimización de los usos de la memoria y la minimización de los enormes cálculos son consideraciones primordiales en el diseño o el desarrollo de los sistemas

Piscina de objetos

En ingeniería de software, el patrón multitono es un patrón de diseño que generaliza el patrón singleton. Mientras que el singleton sólo permite crear una instancia de una clase, el patrón multiton permite la creación controlada de múltiples instancias, que gestiona mediante el uso de un mapa.

La mayoría de la gente y de los libros de texto lo consideran un patrón singleton[cita requerida]. Por ejemplo, el multiton no aparece explícitamente en el libro de texto de programación orientada a objetos de gran prestigio Design Patterns (aparece como un enfoque más flexible denominado registro de singletons).

Aunque pueda parecer que el multiton es una tabla hash con acceso sincronizado, hay dos distinciones importantes. En primer lugar, el multitón no permite a los clientes añadir mapeos. En segundo lugar, el multitón nunca devuelve una referencia nula o vacía, sino que crea y almacena una instancia del multitón en la primera petición con la clave asociada. Las solicitudes posteriores con la misma clave devuelven la instancia original. Una tabla hash es simplemente un detalle de implementación y no el único enfoque posible. El patrón simplifica la recuperación de objetos compartidos en una aplicación.

Patrón de diseño multitón c#

En un artículo anterior describí el patrón de diseño singleton, un patrón de diseño Gang of Four que restringe la instanciación de una clase. Cuando se solicita por primera vez un objeto de la clase, utilizando un método estático, se crea una instancia y se devuelve. Las solicitudes posteriores devuelven la misma referencia al objeto. Esto es ideal cuando se necesita un objeto que se conecte a un recurso que sólo admite una conexión. Por ejemplo, puedes tener una cámara de seguridad que requiera un objeto controlador, pero donde sólo un controlador puede estar vinculado a la cámara.

El patrón de diseño multitono es muy similar al singleton. Cuando se solicita un objeto, se pasa una clave a un método estático que generará o devolverá uno. Si la clave no se ha utilizado antes, se instala un nuevo objeto, vinculado a la clave y devuelto. Si la clave se ha utilizado antes, se devuelve el objeto previamente vinculado a esa clave. Esencialmente, el multitono proporciona la funcionalidad de un grupo de singletons.

Si consideramos el ejemplo de la cámara de seguridad mencionado anteriormente, un multiton sería útil cuando se deben controlar varias cámaras, cada una con una clase de controlador vinculada. Cada controlador estaría representado por una única clave en el multiton. Esto significa que se podría solicitar un controlador utilizando una clave de cámara especificada para obtener el objeto correcto para esa cámara. Nunca habría una situación en la que dos o más controladores estuvieran vinculados a la misma cámara.

Patrón de diseño multitón c++

Multiton es un patrón de diseño orientado al rendimiento. Se basa en la idea de almacenar en caché y reutilizar los objetos correspondientes a una misma clave. Para cada clave de objeto (como un número de proveedor), se mantiene una instancia de objeto estático de una clase (como una clase de proveedor) en una ubicación central. Cada vez que un cliente solicita un objeto correspondiente a la clave, se devuelve el objeto existente en lugar de crear uno nuevo. Este enfoque reduce la huella de memoria debido a la disminución del número de objetos, y evita el coste de rendimiento de volver a crear objetos que tengan la misma clave. (fuente: Design Patterns in ABAP Objects)

En lugar de crear una implementación multitón especializada en cada clase requerida, he creado una clase multitón de propósito general que hace todo el trabajo duro de almacenar objetos en caché. Todo lo que tienes que hacer es implementar una interfaz en tu clase existente para añadir la funcionalidad multiton.

Muy bonito, ¿eh? Teniendo ZCL_BC_MULTITON_DEMO, no necesitamos tratar con el almacenamiento en caché en ningún otro lugar. Esta clase hará el almacenamiento en caché del multitono por ti, y devolverá la instancia en caché en caso de que vuelvas a llamar a GET_OBJ con el mismo id de objeto.