Let’s pick those apart a bit. The last one is easiest: it is, by now, fairly common knowledge that global state is bad. We don’t like global variables, we don’t like static class members, we don’t like anything that makes it harder to isolate bits of our code. Dependence on global state causes a lot of problems: it hurts parallelism, as access to global mutable state generally has to be serialized through the use of locks. It makes dependencies harder to detect and control (any function might silently decide to access our singleton.Metody statyczne są pewna zmianą w stosunku do singletone. Możemy tworzyć instancje obiektu ( lub nawet nie ) i wszystkie będą korzystały z tych samych funkcji ( i danych jeśli pola są też statyczne ). Jednak nadal cierpimy tutaj na pewnego rodzaju globalność. Operujemy na tym samym zestawie danych i metod dla całego programu dostęp do składowych statycznych podczas programowania współbieżnego też musi być odpowiedni zarządzany. Jednak jest to wygodniejsza metoda od sigletone ze względu na usunięcie kroku incjalizacji obiektu. Namespace http://pl.wikipedia.org/wiki/Przestrze%C5%84_nazw Jest ciekawym rozwiązaniem którego używamy codziennie programując w C++ ( przestrzeń nazw std ). Dzięki przestrzeniom nazw możemy uporządkować kod i oddzielić go od reszty nie powielając ilości klas w programie. Jest to też minimalne szybsze niż użycie klas. Dlaczego powstał ten wpis ? W pewnym swoim projekcie używałem bardzo dużo singletone. Po rozmowie z innym programistą zwrócił mi uwagę że jest to nie do końca dobre podejście dlatego szukałem lepszego rozwiązania aktualnie zamiast singletone łącze metody statyczne wraz z namespace , z naciskiem na namespace kod wygląda lepiej , jest czytelniejszy a i łatwiej się tym zarządza oczywiście wszystko w ramach rozsądku. PS. Garść linków http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern http://stackoverflow.com/questions/1321352/why-choose-a-static-class-over-a-singleton-implementation http://stackoverflow.com/questions/41590/how-do-you-properly-use-namespaces-in-c
Singletone vs Namespace vs Metody statyczne
Let the fight begin !
Singletone , namespace i metody statyczne dążą do jednego rożnymi drogami tzn. izolacji spójnej logiczni części kodu który nie potrzebuje być uruchomiany w osobnych instancjach.
Sigletone został opisany w wielu różnych artykułach np.
http://en.wikipedia.org/wiki/Singleton_pattern
http://jalf.dk/blog/2010/03/singletons-solving-problems-you-didnt-know-you-never-had-since-1995/
Generalnie jest to wzorzec zachowania od którego się odchodzi ze względu na jego problemy z zasięgiem globalnym klasy i zmiennych. Obiekty potraktowane singletone’m są ciężkie w użyciu podczas programowania współbieżnego.
Świetnie tłumaczy to ten cytat