2017-07-19 94 views
0

观察者模式是建立一对多关系还是多对多关系?观察者模式中的关系

我发现许多资源,其中由观察者模式建模的关系是一对多的。这是非常有意义的,但是也不可能建立多对多关系的模型,并不意味着它的一般关系是n:m?

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

+0

可能重复[可以观察员观察多个observable?](https://stackoverflow.com/questions/4829462/can-an-observer-observe-multiple-observables) –

+0

您的问题将更清楚与我多对多的例子。 – Fuhrmanator

回答

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

你只是执行不适用观察者模式在这里。

+0

对,我和你在一起。实际上,一位教授告诉我们这是多对多的,但对此有相同的看法。 –

1

要正式地回答你的问题:
http://sourcemaking.com/design_patterns/observer - 定义对象间的一种一对多的依赖关系,当一个对象改变状态,其所有家属得到通知并自动更新。

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

+0

这不回答我的问题:)我的问题是关于观察者模式的建模关系。这是一个普遍的问题,而不是一个如何实现它的问题。 –