2017-07-19 2 views
0

Modelliert das Beobachtermodell eine Eins-zu-Viele-Beziehung oder eine Viele-zu-Viele-Beziehung?Beziehung im Beobachtermuster

Ich habe viele Ressourcen gefunden, wo die durch das Beobachtermuster modellierte Beziehung Eins-zu-Viele ist. Dies ist durchaus sinnvoll, aber ist es nicht möglich, auch eine Viele-zu-Viele-Beziehung zu modellieren, und würde dies nicht bedeuten, dass es eine allgemeine Beziehung ist, n: m?

Dies ist eine allgemeine Frage über die Beziehung, die vom Beobachtermuster modelliert wurde, und nicht eine Frage darüber, wie Observablen als Beobachter zu anderen Observablen hinzugefügt werden können.

+0

Mögliche Duplikate von [kann ein Beobachter mehrere Observablen beobachten?] (Https://stackoverflow.com/questions/4829462/can-an-observer-observe-multiple-observables) –

+0

Ihre Frage wäre mir klarer mit ein Beispiel für Viele-zu-Viele. – Fuhrmanator

Antwort

1

Ein beobachtetes Objekt kann viele Objekte enthalten, die sich registrieren und darauf warten, vom Beobachter benachrichtigt zu werden. Wie Sie bereits wissen, ist dies eins zu vielen. Ich bin mir nicht ganz sicher, wie ich das zu vielen machen möchte. Natürlich können Sie die gleichen Beobachter haben, die andere beobachtbare Objekte abonniert haben, aber dies macht dieses Muster nicht viele zu viele IMHO.

Observable1.Subscribe(observer1); 
Observable1.Subscribe(observer2); 
Observable1.Subscribe(observer3); 

Observable2.Subscribe(observer1); 
Observable2.Subscribe(observer2); 
Observable2.Subscribe(observer3); 

...

ObservableN.Subscribe(observer1); 
ObservableN.Subscribe(observer2); 
ObservableN.Subscribe(observerN); 

Sie nur Muster N Beobachter hier umgesetzt.

+0

Richtig, ich bin mit dir darüber. Es ist eigentlich ein Professor, der uns gesagt hat, dass es viele zu viele sind, aber die gleiche Meinung haben wie Sie. –

1

Ihre Frage formell zu beantworten:
http://sourcemaking.com/design_patterns/observer-ein Definieren einer Eins-zu-viele Abhängigkeiten zwischen Objekten, so dass, wenn ein Objekt seinen Zustand ändert, werden alle seine Familienangehörigen werden automatisch benachrichtigt und aktualisiert.

Ich würde das Iterator-Muster kombinieren und über mehrere Beobachter iterieren.
Für mich ist es sinnvoll, das Observer-Muster eins zu viele zu halten. Verwalten Sie Ihre Vielzahl von Abonnements in einem anderen Code. Dadurch wird es einfacher, Ihren Code zu verwalten, wenn sich Ihre Themen ändern.

+0

Das beantwortet meine Frage nicht :) Meine Frage betrifft nur die modellierte Beziehung des Beobachtermusters. Es ist eine allgemeine Frage und nicht die Frage, wie sie umgesetzt werden soll. –

Verwandte Themen