Obserwator to behawioralny wzorzec projektowy. Opisuje zależność typu „jeden do wielu”, w której zmiana stanu jednego obiektu powoduje automatyczne powiadomienie innych obiektów.
Obiekt obserwowany nazywa się często:
- subject,
- observable,
- publisher.
Obiekty zainteresowane zmianami to:
- observers,
- subscribers,
- listeners.
Przykład zastosowania
Typowym przykładem jest system zdarzeń w interfejsie użytkownika. Przycisk może informować zarejestrowane obiekty, że został kliknięty.
Button -> powiadamia -> ClickListener
Inny przykład to newsletter: użytkownicy zapisują się do listy, a po publikacji nowej wiadomości wszyscy subskrybenci otrzymują powiadomienie.
Jak działa?
- Obserwator rejestruje się w obiekcie obserwowanym.
- Obiekt obserwowany przechowuje listę obserwatorów.
- Po zmianie stanu wywołuje metodę powiadamiającą.
- Obserwatorzy reagują na zmianę.
Do jakiej grupy należy?
Observer należy do wzorców behawioralnych, ponieważ opisuje sposób komunikacji i reagowania obiektów na zmiany.
Nie jest wzorcem strukturalnym, ponieważ jego głównym celem nie jest łączenie klas w strukturę, ale organizacja zachowania i przepływu informacji.
Na egzaminie
Jeśli pytanie dotyczy klasyfikacji wzorców, Obserwator należy kojarzyć z grupą wzorców behawioralnych.