A Multiton egy generatív tervezési minta, amely általánosítja a Singleton mintát . Míg a "Singleton" lehetővé teszi egy osztály egyetlen példányának létrehozását, a multiton lehetővé teszi több példány létrehozását, amelyeket egy asszociatív tömb kezel . Az asszociatív tömb minden kulcsához csak egy példány jön létre, amely lehetővé teszi az objektum egyediségének szabályozását valamilyen attribútummal.
C#:
a System.Collections.Generic használatával ; public enum MultitonType { nulla , egy , KÉT }; public class Multiton { privát statikus , csak olvasható szótár < MultitonType , Multiton > példányok = új szótár < MultitonType , Multiton >(); privát int szám ; privát Multiton ( int number ) { ezt . szám = szám ; } public static Multiton GetInstance ( MultitonType típus ) { // lusta init (nem szál biztonságos, ahogy írva) // Javasoljuk a Double Check Locking használatát, ha menetbiztonságra van szükség if (! példányok . ContainsKey ( típus )) { példányok . Add ( típus , új Multiton ( ( int ) típus )); } példányok visszatérése [ típus ]; } public override string ToString () { return "A számom" + szám . ToString (); } // mintahasználat public static void Main ( string [ ] args ) { Multiton m0 = Multiton . GetInstance ( MultitonType . ZERO ); Multiton m1 = Multiton . GetInstance ( MultitonType . ONE ); Multiton m2 = Multiton . GetInstance ( MultitonType . TWO ); Rendszer . Konzol . WriteLine ( m0 ); Rendszer . Konzol . WriteLine ( m1 ); Rendszer . Konzol . WriteLine ( m2 ); } }Tervezési minták | |
---|---|
Fő | |
Generatív | |
Szerkezeti | |
Viselkedési | |
Párhuzamos programozás |
|
építészeti |
|
Java EE sablonok | |
Egyéb sablonok | |
Könyvek | |
Személyiségek |