Obecnie rozwiązuję duży problem na poziomie 27. Tam jesteśmy proszeni o utworzenie klasy StatisticManager i uczynienie jej singletonem. Ok, nie ma problemu! Później w innych klasach programu muszę wywoływać metody StatistcManagera i tutaj zaczynają mnie spotykać drobne irytujące momenty, muszę napisać zmienną referencyjną
StatisticManager statisticManager = StatisticManager.getInstance(); statisticManager.method();
albo tak: StatisticManager.getInstance().method();
To dużo dodatkowych liter! Znacznie łatwiej byłoby uczynić klasę statyczną i napisać ją w ten sposób: StatisticManager.method();
Myślę, że może singleton ma coś do zyskania w porównaniu z klasą statyczną? Przeczytałem artykuł o Habré i tylko pogłębiłem swoje wątpliwości. Singleton, przynajmniej w tym zadaniu, jest zbędny. Jak na razie widzę tylko jedno zastosowanie singletona - jeśli potrzebujemy oszczędzać zasoby i stworzyć obiekt nie od razu, ale później, kiedy tego potrzebujemy. W innych przypadkach klasa statyczna jest w porządku. Na Habré też piszą coś o dziedziczeniu, ale ja ledwo wyobrażam sobie taką sytuację i pewnie niezbyt często też. Jeśli się mylę, popraw mnie proszę. Chcę tylko lepiej zrozumieć zasady projektowania i może pomoże to komuś innemu to rozgryźć :)
GO TO FULL VERSION