java.util.Observable不遵循GoF的观察者设计模式,对吗?

时间:2013-11-22 10:45:46

标签: java observer-pattern design-patterns

如果我理解正确,在观察者设计模式中,具体观察者将具体子喷射作为场。这就是GoF的书中所说明的:

enter image description here

另一方面,在notifyObserver(Object arg)的{​​{1}}的实现中,主题再次传递给观察者(参见source code

enter image description here

如果具体主题应该通过具体观察者的一个领域来引用(如GoF的规范),为什么我们再次向观察者发送具体主题(如java.util.Observable代码中所示)这似乎建议我java.util.observable不符合GoF的规范。我在这里误解了什么吗?谢谢。

1 个答案:

答案 0 :(得分:3)

是的,实施方式不同。

BUT!

模式是概念,而不是实现。而且这个概念是一样的。在这两种情况下,观察者都可以参考观察到的项目,但你绝对可以想象观察者根本不需要这个参考的情况。

所以这里的概念是“当某些东西改变状态或以某种方式执行时会收到通知”,并且它比任何实现都要广泛得多。