![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 9 Dołączył: 29.05.2009 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Witam,
zastanawiam się czy rozumiem wzorzec Singleton. Mamy taki kod: Kod class test { public $zmienna; public function __construct() {} public static function singleton() { static $instance; if(!isset($instance)) { $instance = new test; } return $instance; } } $single1 = test::singleton(); $single1->zmienna = 100; echo $single1->zmienna; $single2 = test::singleton(); echo $single2->zmienna; $single3 = test::singleton(); echo $single3->zmienna; Ten kod wyświetli na ekranie trzy raz 100. W tym wzorcu chodzi o to aby tworzyć tylko jeden obiekt danej klasy i następnie mogę się odwoływać do niego przez funkcję statyczną kilku krotnie i otrzymam tą samą wartość? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie o to chodzi. ;] Abyś mógł utworzyć tylko jeden obiekt dla klasy.
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
dodatkowo powiniennes konstruktor ustawic jako prywatny. wtedy uzycie gdziekolwiek w kodzie konstrukcji new test wyrzuci wyjątek.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 178 Pomógł: 5 Dołączył: 13.09.2010 Ostrzeżenie: (40%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Bardzo w temacie widzę ;]
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 178 Pomógł: 5 Dołączył: 13.09.2010 Ostrzeżenie: (40%) ![]() ![]() |
i najlepiej sprawdzanie błędów php (IMG:style_emoticons/default/closedeyes.gif)
|
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Fifi masz racje. Wyrzuci blad a nie wyjatek. Co nie zmienia faktu ze ksiazkowy offtopic sie tu zrobil. Nie bede pokazywac palcem przez kogo;)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie o to chodzi. ;] Abyś mógł utworzyć tylko jeden obiekt dla klasy. Najczęściej, a właściwie prawie zawsze. Jednak nie tylko. Z założenia wzorca singleton możemy użyć do kontrolowania ilości wystąpień instancji danej klasy w systemie, co w praktyce oznacza, że możemy tworzyć więcej niż jeden obiekt klasy implementującej wzorzec singleton. Natomiast maksymalna liczba wystąpień instancji takiej klasy powinna być odgórnie ustalona i kontrolowana przez tę właśnie klasę. Poza tym klasa realizująca wzorzec singleton powinna umożliwiać nam swobodny dostęp do każdej z instancji, jaką tworzymy. To tak gwoli uzupełnienia, żeby nie było, że singleton umożliwia nam stworzenie dokładnie jednej instancji danej klasy, choć prawie zawsze tak się go implementuje. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
http://phpedia.pl/wiki/Singleton tu masz odpowiedz na swoje pyta(nie|nia).
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:42 |