【问题标题】:Why is Observable a class and Observer an interface?为什么 Observable 是一个类而 Observer 是一个接口?
【发布时间】:2015-08-02 10:30:54
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

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

两种选择:

  • 根据接口编写您自己的观察者模式实现
  • 看看 JDK 中的所有这些侦听器实现,它们实际上以某种现代的方式实现了观察者模式

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多