如果观察者也是主体,如何应用观察者模式

时间:2012-05-10 19:06:26

标签: oop design-patterns

我有一个容器面板。 在容器中我有其他面板。用户可以在任何面板中更改信息。当面板发生变化时,应更新所有其他容器并刷新它们所呈现的信息。

在正常情况下,观察者模式有一个主题和一群观察者。在这种情况下,观察者也是主体。

这是设计模式可以解决的问题吗?我应该如何以良好的OOP风格构建这些对象之间的交互?

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

听起来更像pub/sub pattern而不是观察者模式。

  • 小组A,B和C订阅主题X.
  • 面板B在收到手动处理主题X
  • 时生成主题Z.

答案 2 :(得分:0)

你可以通过使它成为多对多来调整观察者模式的想法。唯一的区别是观察者需要知道什么主体改变状态而不是任何主体改变了状态。

答案 3 :(得分:0)

假设您有一个容器类实例C1和Observer类实例ob1,ob2,ob3都观察Subject类实例s1。当在ob1上发生事件时,您可以在类S1中触发事件并确保S1中的事件处理函数notfies observer ob1,ob2,ob3

希望这会有所帮助。如果有,请告诉我:))

谢谢!