![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Piszę sobie klasę do obsługi bazy danych i przyglądam się tak bardzo popularnemu wzorcowi singleton. Wszyscy jako przykład użyteczności tego wzorca podają przykład tworzenia instancji klasy do obsługi bazy, tzn połączenia z bazą. Zacząłem się zastanawiać gdzie jest sens, oczywiście w języku php. Zakładam, że mam taką klasę i w skrypcie łącze się z bazą danych, jeśli nie ma nawiązanego połączenia to tworzę obiekt tej klasy a jeśli jest to nie tworzę.
Wszystko jasne. Tylko gdzie jest sens stosowania tego w php. Przecież w skrypcie zazwyczaj tworzy się połączenie z bazą, wykonuje potrzebne operacje na bazie a po zakończeniu wywoływania skryptu, połączenie i tak jest zamykane automatycznie.. Więc jaki jest sens stosowania tego w php? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Ale nie o to chodzi w Singletonie. To jest wzorzec do rozprowadzania i udostępniania tego samego obiektu wielu innym klasom i obiektom. To, że wiele osób zaleca go do udostępniania obiektu DB, to nie znaczy, że nie można stosować alternatywnych rozwiązań. Jeśli chcesz udostępniać tylko wskaźnik połączenia, to nie musisz robić do tego singletona. Możesz tak jak mówisz zrobić static $zmienna, albo wogóle global $zmienna. Wartości Singletona nie zobaczysz w małym skrypcie, albo w systemie www pisanym strona po stronie. Zobaczysz za to w bardzo rozproszonej, polimorficznej aplikacji, gdzie 20 klas operuje na jednym i tym samym obiekcie (np mapa pliku konfiguracyjnego) wierząc, że nie może być inaczej, bo gdyby było - system by padł.
Najważniejsza jest zasada: Nie będziesz tego potrzebował oraz Jeśli nie widzisz problemu, nie korzystaj ze wzorca na siłę Pozdrawiam. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chcesz udostępniać tylko wskaźnik połączenia, to nie musisz robić do tego singletona. A co innego udostępnia singleton? Przecież chodzi właśnie o uchwyt połączenia.. Nigdy nie stosuję czegoś na siłę. Pytam się bo chcę rozważyć na ile może być to przydatne. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 20:26 |