Creational -> Singleton
Das Singleton Pattern stellt sicher, dass es vom gewünschten Objekt nur eine Instanz gibt und diese Global zu erreichen ist.
Beispiel:
class Program { static void Main(string[] args) { Overlord overlord1 = Overlord.GetOverlord(); Overlord overlord2 = Overlord.GetOverlord(); Overlord overlord3 = Overlord.GetOverlord(); Overlord overlord4 = Overlord.GetOverlord(); // Same instance? if (overlord1 == overlord2 && overlord2 == overlord3 && overlord3 == overlord4) { Console.WriteLine("Same overlord!"); } // Summon 15 minions Overlord overlord = Overlord.GetOverlord(); for (int i = 0; i < 15; i++) { var server = overlord.Minion; Console.WriteLine("Command your minion: " + server); } Console.ReadKey(); } } class Overlord { private static Overlord _instance; private List<string> _minions = new List<string>(); private Random _randomMinion = new Random(); private static object syncLock = new object(); // protected constructor protected Overlord() { _minions.Add("Minion1"); _minions.Add("Minion2"); _minions.Add("Minion3"); _minions.Add("Minion4"); _minions.Add("Minion5"); } public static Overlord GetOverlord() { if (_instance == null) { lock (syncLock) { if (_instance == null) { _instance = new Overlord(); } } } return _instance; } public string Minion { get { int random = _randomMinion.Next(_minions.Count); return _minions[random]; } } }
Keine Kommentare:
Kommentar veröffentlichen