【问题标题】:Relationship in Observer Pattern观察者模式中的关系
【发布时间】:2017-07-19 17:33:55
【问题描述】:

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

我发现了许多资源,其中观察者模式建模的关系是一对多的。这是完全有道理的,但是否也可以对多对多关系进行建模,这是否意味着它的一般关系是 n:m?

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

【问题讨论】:

标签: design-patterns observer-pattern


【解决方案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 个观察者模式。

【讨论】:

  • 好的,我同意你的意见。实际上是一位教授告诉我们这是多对多,但对此有相同的选择。
【解决方案2】:

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

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

【讨论】:

  • 这不能回答我的问题:) 我的问题只是关于观察者模式的建模关系。这是一个普遍的问题,而不是关于如何实施的问题。
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 2016-02-20
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2013-03-11
  • 2013-02-12
相关资源
最近更新 更多