Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wzorzec Singleton.
cykcykacz
post
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ść?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Fifi209
post
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.
Go to the top of the page
+Quote Post
ActivePlayer
post
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.
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(ActivePlayer @ 9.07.2011, 22:05:48 ) *
wyrzuci wyjątek.

Ciekawa teoria. ;] Raczej errora ale nie wyjątek.
Go to the top of the page
+Quote Post
user767
post
Post #5





Grupa: Zarejestrowani
Postów: 178
Pomógł: 5
Dołączył: 13.09.2010

Ostrzeżenie: (40%)
XX---


Możesz wrzucić errora do tablicy
  1. $errors[] = "Coś zrobiłem nie tak po drodze";


Wrzucić to


  1. if(count($errors)){
  2. print_r($errors);
  3. }
Go to the top of the page
+Quote Post
Fifi209
post
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ę ;]
Go to the top of the page
+Quote Post
user767
post
Post #7





Grupa: Zarejestrowani
Postów: 178
Pomógł: 5
Dołączył: 13.09.2010

Ostrzeżenie: (40%)
XX---


i najlepiej sprawdzanie błędów php (IMG:style_emoticons/default/closedeyes.gif)
Go to the top of the page
+Quote Post
ActivePlayer
post
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;)
Go to the top of the page
+Quote Post
mortus
post
Post #9





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Cytat(Fifi209 @ 9.07.2011, 21:44:14 ) *
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.
Go to the top of the page
+Quote Post
skowron-line
post
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).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 04:42