PHP5 i Singletony |
PHP5 i Singletony |
18.03.2004, 19:20:04
Post
#21
|
|
Grupa: Zarejestrowani Postów: 204 Pomógł: 0 Dołączył: 26.12.2003 Skąd: Rzeszów Ostrzeżenie: (0%) |
http://www.phppatterns.com/index.php/artic...ticleview/6/1/1
http://www.phppatterns.com/index.php/artic...cleview/75/1/1/ http://www.sitepoint.com/article/1192/9 - PHP5 i jeszcze php Solutions najnowszy (artykuł o singletonach jest na końcu) |
|
|
18.03.2004, 23:42:55
Post
#22
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) |
Formalnie rzecz biorąc, singletony nie są potrzebne i da się zrobić to samo na zmiennych "klasowych", czyli tak naprawdę na zmiennych globalnych (jedyna różnica, że zamiast $bar piszemy Foo::$bar). Ale zmienne globalne, jak wiadomo, są brzydkie i bebe, i dlatego w OOP stosuje się singletony.
Zresztą, singletony mogą teoretycznie trochę więcej. Można - choć jest to trudne - zrobić singleton który można inicjować parametrem, używając wyjątków i new (ale to w Javie widziałem ). Można również - choć to również trudne, z uwagi na pokręcony proces inicjacji obiektu - próbować dziedziczenia. Można wreszcie - i to jest chyba najważniejsze - przekazywać sobie referencje do obiektu singletonowego. Jeżeli mamy singleton Foo implementujący interfejs Bar, to możemy sobie przekazywać referencję do Foo (uzyskaną przez Foo::getInstance() ) i nie zastanawiać się co to jest - implementuje Bar i to wystarcza. Czyli singleton jest odpowiednikiem kodu globalnego w OOP, i kilka rzeczy specyficznych dla OOP potrafi "dodatkowo" zrobić. A poza tym, wielkie klasy z samymi metodami statycznymi są oznaką amatorstwa, a mały singleton tu i ówdzie wygląda profesjonalnie . |
|
|
19.03.2004, 08:02:40
Post
#23
|
|
Grupa: Zarejestrowani Postów: 204 Pomógł: 0 Dołączył: 26.12.2003 Skąd: Rzeszów Ostrzeżenie: (0%) |
Cytat A poza tym, wielkie klasy z samymi metodami statycznymi są oznaką amatorstwa, a mały singleton tu i ówdzie wygląda profesjonalnie .
Tak też myslałem:) |
|
|
Wersja Lo-Fi | Aktualny czas: 8.06.2024 - 06:28 |