为什么Observable是一个类而Observer是一个接口?

时间:2015-05-20 23:40:41

标签: java model-view-controller observer-pattern

我对模型 - 视图 - 控制器的东西还是新手,这只是我的想法。为什么Observable类是一个要扩展的类,而Observer类是一个接口?这样做的目的是什么?

1 个答案:

答案 0 :(得分:5)

正如您在Java Documentation中看到的那样, Observable 类已添加到版本1.0中的JDK中。它可能有点过时了。但是我们讨论的是JDK,因此该类仍然存在,因为JDK保留了所有已弃用的代码,直到人类死亡。

如果您查看Observer Pattern,那么您可能已经意识到没有 Observable 类。相反,它被命名为主题主题观察者通常显示为类,但用作接口。 JDK中过时的Observer Pattern实现存在问题。 主题(可观察)是一个类,必须是子类。所以你遇到的问题是你不能从另一个更重要的类中继承。 Java只允许单继承。

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

两种选择:

  • 基于接口
  • 编写您自己的Observer Pattern实现
  • 查看JDK中的所有这些侦听器实现,它实际上以一种现代的方式实现Observer模式