Jakiś czas temu przyglądałem się na kod, który wykorzystywał delegata Func. Pomyślałem sobie, że przecież coś takiego można wykorzystać dla wzorca singleton. Szybka implementacja, sprawdzenie i… działa 😀
Istota jest naprawdę bardzo prosta i praktycznie taka sama jak zaprezentował to Jerzy Piechowiak ale zamiast statycznego konstruktora klasy użyłem delegata 🙂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public interface IManager { string Test(); } class Manager : IManager { private static Manager _manage; public static Func<IManager> Manage = () => _manage ?? (_manage = new Manager()); public string Test() { return "test"; } } |
Wywołanie takiego rodzaju singleton nie rożni się praktycznie niczym 🙂
1 2 3 4 5 |
static void Main(string[] args) { Console.WriteLine(Manager.Manage().Test()); Console.ReadLine(); } |
Ktoś z Was może się zapytać.. Stary, ale po co w ten sposób?!
Ja odpowiem: Bo można i tak 😀 i o to kod.
Życzę wszystkim zdrowych i spokojnych Świąt Wielkanocnych 😉