java - 为什么 Observable 是类而 Observer 是接口(interface)?

标签 java model-view-controller observer-pattern

我对模型- View - Controller 的东西还很陌生,这只是我的想法。为什么Observable类是要扩展的类而Observer类是接口(interface)呢?这样做的目的是什么?

最佳答案

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

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

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

两种选择:

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

关于java - 为什么 Observable 是类而 Observer 是接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30362166/

相关文章:

java - Android 中两个重叠的 ImageView

java - 类文件夹显示在构建路径中,但不显示在项目资源管理器中

java - 如何在 JOptionPane 之后请求FocusInWindow?

javascript - 在 Controller 操作中调用 Javascript 函数 -YII

java - 无法使用 Spring-MVC 框架定位文件

javascript - 如何在任务系统中构建/设计事件和任务以使代码易于管理?

java - ProgressBar propertychangeListener 在这种情况下不会更新

java - Spring Boot 在部署到 Tomcat 期间无法加载外部 jar

c++ - 重构算法

ruby - 在 ruby​​ 方法上定义自定义回调