StartWzorce projektoweObserwator (observer)
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Obserwator (observer)
Ocena użytkowników:+++++ / 3
SłabyŚwietny 
Wpisany przez Kamil Dworak
wtorek, 10 sierpnia 2010 19:53
Obserwator (ang. observer) - wzorzec z rodziny wzorców operacyjnych. Składa się z obiektu, który nazywamy "obiektem obserwowanym" oraz pewnej liczy obiektów obserwujących. Występuje tutaj relacja typu jeden do wielu. Obiekt obserwowany jest zarządcą danych, informuje on wszystkich swoich obserwatorów o zmianach w danych, które zawiera. Jest on jedynym prawowitym właścicielem owych danych. Gdy obserwatorzy dostają informacje, że dane uległy zmianie, pobierają je od obiektu obserwowanego i dokonują aktualizacji w posiadanych przez siebie danych, pod kątem stanu danych obiektu obserwowanego. Obiekt obserwujący sam może zdecydować, czy dalej chce obserwować, ale również obiekt obserwowany może go usunąć z listy obserwatorów. Obserwator nie zna innych obserwujących, są oni niezależni od siebie (jakakolwiek modyfikacja jednego obserwatora nie wpływają na innych). Wzorzec charakteryzuje się łatwością dodawania nowych obserwujących (tworzymy nową klasę, która będzie implementować interfejs obserwator). Obiekt obserwujący sam może być obserwowanym (kompozycja).

obserwator


Diagram odpowiadający załączonemu przykładowi:

obserwator - przykład


  • Tworzymy obiekt TotoLotek, który będzie obserwowany.
  • Następnie deklarujemy dwóch obserwatorów (telewizja i internet) oraz dodajemy ich do listy obserwatorów.
  • Wykonujemy pierwsze losowanie.
  • Na samym końcu metody kolejneLosowanietablicy() znajduje się wywołanie metody powiadamiajObserwatorów(). Wywołuje ona, dla każdego obserwatora będącego w zbiorze, metodę update.
  • Dane w każdym z obserwatorów zostały zaktualizowane.
  • Publikujemy wyniki losowania w telewizji oraz internecie.
  • Losowanie 2 przebiega tak samo jak losowanie 1.
  • Przed losowaniem 3 obserwator telewizja zdecydował, że nie chce już być obserwującym i samoczynnie opuszcza zbiór obserwatorów.
  • Po 3 publikacji widzimy, że internet ma zaktualizowane dane, natomiast wyniki publikowane w telewizji nie są już aktualne.




Autor Język programowania Komentarz Otwórz Pobierz Ocena
Kamil Dworak C# Visual Studio 2008
Implementacja w C#
Implementacja w C#
++++- / 1
Kamil Dworak Java
Implementacja w Java
Implementacja w Java
++++- / 1
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: wtorek, 10 sierpnia 2010 20:11

Komentarze

 
photo
0 # martaaaaaaaaa 2011-05-10 15:33
Zostało to opisane trochę niedokładnie - np gdzie mam deklarować dwóch obserwatorów i jak przebiega to "publikowanie wyników w internecie i telewizji" po zaktualizowaniu obserwatorów. I co właściwie powinno być w funkcji update?
Odpowiedz | Odpowiedz z cytatem | Cytować
 

Dodaj komentarz

Kod antysapmowy
Odśwież