有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAutil。Observable不遵循GoF的Observable设计模式,对吧?

如果我理解正确,在观察者设计模式中,一个具体的观察者将具体的主题作为一个字段。这在GoF的书中有说明:

enter image description here

另一方面,在notifyObserver(Object arg)of java.util.Observable的实现中,主题再次传递给观察者(参见source code

enter image description here

如果具体主题应该通过具体观察者中的一个字段引用(如GoF的规范中),那么为什么我们要再次将具体主题发送给观察者(如java.util.observable代码中),这似乎表明java.util.Observable不符合GoF的规范。我误解了什么吗?谢谢


共 (1) 个答案

  1. # 1 楼答案

    是的,实现方式不同

    但是

    模式是概念,而不是实现。概念是一样的。在这两种情况下,观察者都有一个对被观察项目的引用,但你肯定也可以想象一种情况,即观察者根本不需要这个引用

    因此,这里的概念是“当其他东西以某种方式改变状态或执行时,会收到通知”,它比任何实现都要广泛