![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Mogłby ktoś wytłumaczyć, jaka jest własciwie róznica pomiędzy wzorcem Singleton a tym, ze w klasie mamy wszystkie metody statyczne? Bo jakoś nie moge dojśc co i kiedy stosowac. Wg mnie to nie ma w tym wiekszej różnicy. A co wy sądzicie?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 19.08.2004 Skąd: Pruszków Ostrzeżenie: (0%) ![]() ![]() |
Zgadza się, ale Twój obiekt $db jest zmienną globalną - a przed tym ma właśnie chronić singleton. Powiedzmy, że masz taką sytuację:
W bar() $db nie istnieje. Musisz wywołać jeszcze raz $db = new DB() - co wiąże się z tym, że będziesz miał dwa takie same obiekty. Możesz również korzystać ze zmiennej globalnej - a fuj nie ładne. Możesz skorzystać z singletona, który gwarantuje jedną instancje i tylko jedną. Dla przykładu masz klasę Preferences, która przechowuje ustawienia dla całego serwisu. Jeśli klasa X zmieni coś w Preferences to klasa Z musi odczytać tą zmianę (nie mogą być dwa różne obiekty Preferences - może być tylko jeden). Jednak nadal nie rozumiem, czym się różni funkcjonalnością klasa statyczna od singletona. Klasa statyczna również: - nie zezwala na dwie różne wersje objektów - można przechowywać składowe (np. identyfikator połączenia z bazą danych) - private static - zachowana jest hermetyzacja Poza tym korzystanie ze statycznej klasy jest szybsze (nie trzeba pobierać instancji) tj.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 08:43 |