Java 为什么Observable是一个类,而Observator是一个接口?

Java 为什么Observable是一个类,而Observator是一个接口?,java,model-view-controller,observer-pattern,Java,Model View Controller,Observer Pattern,我对模型-视图-控制器的东西还是相当陌生的,我刚刚想到了这一点。为什么可观察类是一个要扩展的类,而观察类是一个接口?这样做的目的是什么?正如您在中看到的,Observable类是在1.0版中添加到JDK的。可能有点过时了。但是我们谈论的是JDK,所以这个类仍然存在,因为JDK保留了所有不推荐的代码,直到人类灭亡 如果你看一看,你可能已经意识到没有可观察的类。相反,它被命名为Subject。主题和观察者通常显示为类,但用作接口。JDK中过时的观察者模式实现也存在问题。主体(可观察)是一个类,必须是

我对模型-视图-控制器的东西还是相当陌生的,我刚刚想到了这一点。为什么可观察类是一个要扩展的类,而观察类是一个接口?这样做的目的是什么?

正如您在中看到的,Observable类是在1.0版中添加到JDK的。可能有点过时了。但是我们谈论的是JDK,所以这个类仍然存在,因为JDK保留了所有不推荐的代码,直到人类灭亡

如果你看一看,你可能已经意识到没有可观察的类。相反,它被命名为Subject。主题和观察者通常显示为类,但用作接口。JDK中过时的观察者模式实现也存在问题。主体(可观察)是一个类,必须是子类。因此,您遇到了无法从另一个更重要的类派生子类的问题。Java只允许单一继承。

最佳建议:不要使用这个过时的实现

两种选择:

  • 根据接口编程您自己的观察者模式实现
  • 看看JDK中的所有这些侦听器实现,它们实际上以某种现代的方式实现了Observer模式
。。参考这个。以供补充参考。