Observer Design Pattern vs " słuchacze"

Wydaje mi się, że schemat projektowy obserwatora opisany w GOF jest tak naprawdę tym samym, co słuchacze znalezieni w różnych zestawach narzędzi. Czy istnieje różnica między pojęciami, czy słuchacze i obserwatorzy naprawdę to samo.

(nie szukam żadnej konkretnej implementacji języka komputerowego, chcę tylko zrozumieć różnicę (jeśli w ogóle) z punktu widzenia projektu. Tak, Wiem, że na SOF jest kilka odpowiedzi na podobne pytania, ale są one zakorzenione w konkretnych pytania dotyczące konkretnych języków. szukam odpowiedzi projektowej, a nie językowej.)

Author: erickrf, 2010-07-29

3 answers

To, czy termin "słuchacz" odnosi się do wzorca obserwatora, czy nie, zależy od kontekstu. Na przykład "słuchacze zdarzeń" Java Swing są częścią implementacji wzorca obserwatora, podczas gdy "śledzenia". Net nie są.

Często zdarza się, że autorzy frameworków przypisują różne nazwy komponentom uczestniczącym w danej implementacji wzorca, ale oficjalne nazwy wzorców są zwykle używane podczas omawiania samych wzorców.

Odnośnie projektowania, implementacja danego wzorca często będzie zależeć od używanego języka i platformy. Jako takie, konkretna implementacja wzorca obserwatora w ramach danego frameworka (co może się zdarzyć, że użyje terminu "słuchacz" do opisania roli ConcreteObserver) może nieznacznie różnić się od opisanej w książce wzorców projektowych.

 48
Author: Derek Greer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-29 02:35:20

Opis obserwatora we wzorcach projektowych Gamma et ma charakter dwukierunkowy. al. (GoF).

W opisie obserwatora, jeden z konkretnych serwerów może sygnalizować zmianę jego przedmiotu. Podmiot, który przechowuje listę wszystkich Concreteobserverów, następnie powiadamia o swojej liście. Wszystkie Concreteobservery, w tym Prime mover, reagują odpowiednio.

Wspólne implementacje słuchaczy wydają się reagować na zdarzenia z zewnątrz.

Więc Ja można powiedzieć, że słuchacz jest mniej uogólnionym przypadkiem obserwatora.

 20
Author: Richard Wеrеzaк,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-10 17:37:46

Słuchacz może być implementacją wzorca obserwatora. Słuchacz zasadniczo czeka na zdarzenie na danym obiekcie, czyli to, co robi obserwator.

Wiem, że nie chodzi Ci o odpowiedź specyficzną dla języka, ale trudno jest mówić o tym w abstrakcji. Więc gdybym miał to zbadać w. NET, byłbym skłonny otworzyć zestaw zawierający słuchacz w. NET Reflector, który pozwoli mi Zdemontować Zestaw i sprawdzić jego logikę przed wzór projektu.

 3
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-29 00:42:43