Patrón multiton


En ingeniería de software , el patrón multiton es un patrón de diseño que generaliza el patrón singleton . Mientras que el singleton permite que se cree solo 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 .

En lugar de tener una sola instancia por aplicación (por ejemplo, el java.lang.Runtimeobjeto en el lenguaje de programación Java ), el patrón multiton asegura una sola instancia por clave .

La mayoría de las personas y los libros de texto consideran que este es un patrón singleton [ cita requerida ] . Por ejemplo, multiton no aparece explícitamente en los patrones de diseño del libro de texto de programación orientada a objetos de gran prestigio (aparece como un enfoque más flexible llamado registro de singletons ).

Si bien puede parecer que el multiton es una tabla hash con acceso sincronizado, existen dos distinciones importantes. Primero, el multiton no permite a los clientes agregar asignaciones. En segundo lugar, multiton nunca devuelve una referencia nula o vacía; en su lugar, crea y almacena una instancia multiton en la primera solicitud 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.

Dado que el grupo de objetos se crea solo una vez, al ser un miembro asociado con la clase (en lugar de la instancia), el multiton conserva su comportamiento plano en lugar de evolucionar hacia una estructura de árbol .

El multiton es único porque proporciona acceso centralizado a un solo directorio (es decir, todas las claves están en el mismo espacio de nombres, per se ) de multiton, donde cada instancia de multiton en el grupo puede existir con su propio estado . De esta manera, el patrón aboga por el almacenamiento indexado de objetos esenciales para el sistema (tal como lo proporcionaría un sistema LDAP , por ejemplo). Sin embargo, un multiton está limitado a un uso amplio por parte de un solo sistema en lugar de una miríada de sistemas distribuidos.