JAVAutil。Observable不遵循GoF的Observable设计模式,对吧?
如果我理解正确,在观察者设计模式中,一个具体的观察者将具体的主题作为一个字段。这在GoF的书中有说明:
另一方面,在notifyObserver(Object arg)
of java.util.Observable
的实现中,主题再次传递给观察者(参见source code)
如果具体主题应该通过具体观察者中的一个字段引用(如GoF的规范中),那么为什么我们要再次将具体主题发送给观察者(如java.util.observable
代码中),这似乎表明java.util.Observable
不符合GoF的规范。我误解了什么吗?谢谢
# 1 楼答案
是的,实现方式不同
但是
模式是概念,而不是实现。概念是一样的。在这两种情况下,观察者都有一个对被观察项目的引用,但你肯定也可以想象一种情况,即观察者根本不需要这个引用
因此,这里的概念是“当其他东西以某种方式改变状态或执行时,会收到通知”,它比任何实现都要广泛