![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Jest to klasa wzorca singleton(ja go tak rozumie czy dobrze?) Jak go użyje: do kontrolera dodam $this -> load = new Singleton; Jeszcze dla pewności. Wzorzec singleton odpowiada za inicjacje pojedynczej klasy w pamięci? Czyli ze jeśli chę otworzyć na chwilę klase to używam go tak? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Nie! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Silngleton to klasa, której zostanie stworzona tylko jedna instancja. W sensie tylko jeden obiekt tej klasy. Ani jednego więcej, ani jednego mniej. Ma to sens gdy robimy np klasę do obsługi bazy danych. Jak wiadomo najwięcej czasu zabiera połączenie z bazą, więc nie ma sensu łączyć się wielkokrotnie. Łączenie z bazą to zadanie dla konstruktora, więc zostałby wywołany za każdym razem gdy tworzymy obiekt bazy danych. Daltego używa się (nie do końca;) ) Singletona. Jeżeli obiekt bazy został wcześniej stworzony (nawiązane zostało połączenie z bazą) to zostanie zwrócona już istniejąca instancja zamiast tworzenia nowej. Jest to realizowane poprze prywatny konstruktor. W sensie "new BD" zwróciłoby błąd - bo konstruktor jest prywatny i nie może być wywołany z zewnątrz. W samej klasie robisz statyczną metodę np getInstance(); która zwraca obiekt bazy jeżeli on istnieje (jest przypisany do statycznej zmiennej klasy) lub tworzy nowy i zwraca go....
Pozdrawiam! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 14:54 |