Mówi się, że singleton to najprostszy i jeden z najprzydatniejszych wzorców projektowych. Coś w tym jest, przydaje się zwłaszcza w aplikacjach mobilnych, gdzie nie zawsze możemy przesyłać do innej strony cały jej content. Przydaje się wtedy obiekt, który współdzieli content stron. Możemy to również uzyskać poprzez statyczny obiekt w klasie, natomiast dzięki stworzeniu singletonu nie musimy robić wszystkich metod i pól statycznych, a używanie go później nie różni się niczym od używania zwykłego obiektu. Zastosowanie tego wzorca posiada również inne plusy, ale chciałbym się skupić bardziej na jego implementacji.
Pisząc go po raz n-ty, z małą pomocą ReSharpera udało mi się go streścić do 3 linijek, a wygląda on następująco:
class MySingleton { private static MySingleton _instance; public static MySingleton Instance { get { return _instance ?? (_instance = new MySingleton()); } } private MySingleton() { } }
Pobranie instancji singletona wygląda tak:
var mySingleton = MySingleton.Instance;
Jeśli chodzi o inne wzorce projektowe to polecam książkę “Wzorce projektowe”, Bandy Czworga. Podstawową literaturę dla każdego programisty.