-2

使用哪种设计模式或如何做,以便一个主体可以有多个观察者,并且主体可以在必要时通知特定的观察者。在经典的观察者模式中,有一个函数用于一次通知一个观察者或观察者列表,它不能通知特定的观察者。

4

2 回答 2

4

观察者模式及其更通用的变体发布-订阅习惯用法用于将可观察者与了解其观察者分离。

如果 observable 已经知道对需要通知的特定对象的引用 - 只需直接调用该对象。

您还可以使用发布-订阅/事件总线- 为每个特定观察者创建一个主题,让观察者订阅特定主题并将事件/发布发送到该主题。

于 2013-03-09T05:54:39.207 回答
1

虽然我同意@mantrid 所说的,但您仍然可以使用带有过滤支持的观察者模式或使用拉模式。对于第一个选项,向您的 Observer 接口添加一个方法,例如:IsInterested(Object context)Subject 在其所有 Observers 上调用此方法以决定它们是否应该接收通知,并且 Subject 可以通过context参数为 Observer 提供一些信息以帮助它决定。对于第二个选项,使用 Pull 模型,您的 Subject 通知所有 Observers 一些状态更改,并且这些 Observers 可以选择进一步请求或不请求(提取他们想要的信息)来自主题的新状态信息。

于 2013-03-09T22:59:10.630 回答