Multiton (patrón de diseño)

Multiton es un patrón de diseño generativo que generaliza el patrón Singleton . Mientras que "Singleton" permite crear solo una instancia de una clase, multiton le permite crear varias instancias, que se administran a través de una matriz asociativa . Solo se crea una instancia para cada una de las claves de la matriz asociativa, lo que le permite controlar la unicidad del objeto por algún atributo.

Ejemplos de implementación

C#:

usando System.Collections.Generic ; enumeración pública MultitonType { cero , uno , DOS }; clase pública Multiton { Diccionario de solo lectura estático privado < MultitonType , Multiton > instancias = nuevo Diccionario < MultitonType , Multiton >(); numero int privado ; privado Multiton ( número int ) { esto _ número = número ; } público estático Multiton GetInstance ( tipo MultitonType ) { // inicio diferido (no seguro para subprocesos como está escrito) // Recomendar el uso de bloqueo de doble verificación si necesita seguridad de subprocesos if (! instancias . Contiene clave ( tipo )) { instancias _ Agregar ( tipo , nuevo Multiton (( int ) tipo )); } devolver instancias [ tipo ]; } cadena de anulación pública ToString () { devuelve "Mi número es" + número . a la cadena (); } // ejemplo de uso public static void Main ( cadena [] args ) { Multitón m0 = Multitón . GetInstance ( MultitonType . ZERO ); Multitón m1 = Multitón . GetInstance ( MultitonType . UNO ); Multitón m2 = Multitón . GetInstance ( MultitonType . DOS ); sistema _ consola _ WriteLine ( m0 ); sistema _ consola _ WriteLine ( m1 ); sistema _ consola _ WriteLine ( m2 ); } }

Notas