Logo David Burdelak
Słownik · Programowanie i wzorce projektowe

Co to jest wzorzec Obserwator?

Ostatnia aktualizacja:

Obserwator (Observer) to wzorzec behawioralny, w którym jeden obiekt, zwany podmiotem, utrzymuje listę zainteresowanych nim obserwatorów i powiadamia ich o zmianach swojego stanu. Dzięki temu nadawca zdarzenia nie musi znać odbiorców ani ich liczby. Wzorzec dobrze sprawdza się w interfejsach użytkownika, systemach zdarzeń i bibliotekach reaktywnych.

Jak działa Obserwator?

Obserwatorzy rejestrują się u podmiotu, np. metodą subskrybuj(). Gdy coś się zmienia, podmiot wywołuje na każdym z nich metodę aktualizującą. W PHP standardowe interfejsy to SplSubject i SplObserver.

Gdzie go spotkasz?

W systemach zdarzeń i nasłuchiwaczy: w przeglądarce addEventListener działa właśnie w ten sposób, a w frameworkach serwerowych zdarzenia typu „zamówienie złożone” wywołują oddzielne akcje, jak wysłanie maila czy aktualizacja magazynu. Podobne podejście stosuje programowanie reaktywne.

Ryzyka

Zbyt wiele powiązań przez zdarzenia utrudnia śledzenie przepływu programu. Zapomniane subskrypcje powodują wycieki pamięci, a kolejność wywołań obserwatorów bywa nieprzewidywalna.

Ma to bezpośredni związek z praktykami, na których opiera się pisanie czytelnego i zrozumiałego kodu.

Zobacz w praktyce

Powiązane pojęcia

Wszystkie hasła z kategorii Programowanie i wzorce projektowe