【问题标题】:Chaining of observer/observable pattern观察者/可观察模式的链接
【发布时间】:2013-02-12 23:59:56
【问题描述】:

是否存在形成“复合”观察者/可观察者的设计模式?
我的意思是我有一个可观察的 A 通知它的听众一些变化。
每个侦听器也是一个可观察对象,并通知自己的侦听器(在它执行的某些操作中,哪个操作由第一个可观察对象的通知触发)。
这种观察者/可观察者的“链接”是否可以作为设计,或者是否有标准模式?

【问题讨论】:

  • 恕我直言,没关系。 JDK7 中没有这方面的标准类。
  • 对我来说没关系。让我感到奇怪的是,您添加了“多线程”标签,但没有在您的帖子中直接提及。

标签: java multithreading oop design-patterns observer-pattern


【解决方案1】:

对于你提到的链接,我看不出有什么区别。

观察者模式的目的是,当一个对象的状态发生变化时,它会通知相关方(监听者/观察者)这个变化,让监听者根据状态变化做出反应。

如果按照设计,其他相关方可以观察到侦听器的状态变化,我看不出有什么理由不能使用观察者模式来发布事件。

然而,这只是另一种观察者可观察的关系。没有发生特殊的“链接”。

有点 OT:更适合称为链接的东西是:被观察对象 O 向侦听器 A 发送事​​件 E,然后 A 将事件传播给另一个侦听器 B。但是从逻辑上讲,它们都在侦听源自事件来自 O。这种“链接”可以通过使用装饰器模式来完成。

【讨论】:

    【解决方案2】:

    您的类应该实现两个接口:观察者和主题。挑战正在将所有观察者注册到适当的对象。
    您只需在 Observer 类 (link to wiki) 中的 notify() 方法中添加 notifyObservers()
    请注意,您可以启动无限循环的通知:A => B => C => A => ... 等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-20
      • 2023-04-10
      • 2012-09-02
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      相关资源
      最近更新 更多