Wzorzec projektowy obserwator - observer
Stronę tą wyświetlono już: 3029 razy
Opis wzorca projektowego obserwator
Wzorzec projektowy obserwator należy do czynnościowych wzorców projektowych. Celem tego wzorca jest wywoływanie klasy zawierającej klasy obserwatorów w momencie, gdy zajdzie określona zmiana w obiekcie obserwowanym. Innymi słowy jeżeli obserwowany obiekt zmienia stan, wtedy uruchamia on odpowiednią metodę klasy zawierającej obserwatorów a ta wywołuje kolejno metody na zarejestrowanych obserwatorach.
Przykładowy diagram UML dla wzorca projektowego obserwator
Na poniższym diagramie UML klasa MovingPoint dziedziczy po interfejsie iSubject, który przechowuje wskaźnik do obiektu klasy Observers. Klasa Observers agreguje wielokrotnie interfejsy iSubject, co z kolei oznacza, że obiekty klasy MovingPoint są w tym przypadku równocześnie obserwatorami. Możliwe jest oczywiście zaimplementowanie oddzielnej klasy reagującej na zmiany w obserwowanych obiektach.
Co ważne interfejs iSubject automatycznie rejestruje się do podanego wskaźnika na obiekt klasy obserwatora Observers. Czyni to za pomocą operatora += wewnątrz konstruktora interfejsu iSubject. Również usunięcie obiektu jest realizowane przez ten interfejs w jego wirtualnym destruktorze z wykorzystaniem operatora -=.
Każdy punkt po zmianie położenia wywołuje metodę checkCollision klasy Observers, która (jak sama nazwa mówi) sprawdza czy dany punkt koliduje z resztą punktów.
Przykładowa implementacja wzorca projektowego obserwator w C++
Wynik działania powyższego kodu:
Uff, we are safe now!!! No colision with object on position {0; 0} after moving object on position: {15; 5} Collision!!! {15; 5} == {15; 5} Uff, we are safe now!!! No colision with object on position {30; 20} after moving object on position: {15; 5}
Tytuł:
C++. Projektowanie oprogramowania. Zasady i wzorce projektowe
Autor:
Klaus Iglberger
Tytuł:
Wzorce projektowe. Rusz głową! Tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego. Wydanie II
Autor:
Eric Freeman, Elisabeth Robson
Tytuł:
React 17. Wzorce projektowe i najlepsze praktyki. Projektowanie i rozwijanie nowoczesnych aplikacji internetowych. Wydanie III
Autor:
Carlos Santana Roldán
Tytuł:
Wzorce projektowe. Rusz głową! Tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego. Wydanie II
Autor:
Eric Freeman, Elisabeth Robson
Tytuł:
Wzorce projektowe w .NET Core 3. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#
Autor:
Dmitri Nesteruk
Tytuł:
Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku
Autor:
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Tytuł:
Projektowanie interfejsów., Sprawdzone wzorce projektowe. Wydanie III
Autor:
Jenifer Tidwell, Charles Brewer, Aynne Valencia-Brooks
Tytuł:
Kubernetes. Wzorce projektowe. Komponenty wielokrotnego użycia do projektowania natywnych aplikacji chmurowych
Autor:
Bilgin Ibryam, Roland Huß
Tytuł:
Wzorce projektowe w .NET. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#
Autor:
Dmitri Nesteruk
Tytuł:
Programowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II
Autor:
Alan Shalloway, James R. Trott