观察者模式中的关系

时间:2017-07-19 17:33:55

标签: design-patterns observer-pattern

观察者模式是模型一对多关系还是多对多关系?

我发现很多资源,其中由观察者模式建模的关系是一对多的。这是非常有意义的,但是不可能对多对多关系建模并且不会暗示它的一般关系是n:m?

这是关于由观察者模式建模的关系的一般性问题,而不是关于如何将观察者作为观察者添加到其他可观察者的关系。

2 个答案:

答案 0 :(得分:1)

正式回答你的问题:
http://sourcemaking.com/design_patterns/observer - 定义对象之间的一对多依赖关系,以便当一个对象更改状态时,会自动通知并更新其所有依赖项。

我会结合迭代器模式并迭代多个观察者 对我而言,将观察者模式保持为一对多是有意义的。使用不同的代码管理您的众多订阅。如果您的主题发生变化,这将使您更容易管理您的代码。

答案 1 :(得分:1)

一个观察对象可以有许多正在注册并等待观察者通知的对象。如您所知,这是一对多。我不确定如何制作这么多?当然,您可以让相同的观察者订阅其他可观察对象,但这并不会使这种模式成为许多恕我直言。

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);

你刚刚在这里实现了N个观察者模式。