java - 应用MVC模式的时候让controller继承view可以吗?

标签 java model-view-controller swing

我正在“实践”中学习 MVC 模式,这意味着我试图掌握如何在任何给定的 Java 应用程序中实现它。我只是通过另一个变得更聪明了一点 question我刚问过,我的跟进来了。

MVC 模式的本质是模型既不知道 View 也不知道 Controller 。但是, Controller 和 View 必须相互了解,因为 Controller 很可能需要更新 View ,而 View 需要将用户操作发送到 Controller 。我理解通常使用策略模式来实现 Controller ,这意味着 Controller 是 View 的行为。不管怎么看, View 和 Controller 是交织在一起的。

现在,我知道人们应该更喜欢组合而不是继承。但是,创建 Controller 继承 View 的设计是否有意义。我主要考虑的是不必在 View 上编写大量访问器和修改器方法,而是使用 protected 关键字定义所有组件,以便子类可以访问它们。

有人可能会想,当用户输入发生时, View 应该如何通知 Controller 。我的想法是让 Controller 中的每个按钮都对应一个 Action 。然后只需用相应的按钮(在 View 中)注册正确的操作(在 Controller 中,它是子类)。

我要模糊关注点分离吗?这仍然是 MVC 模式,还是我正在走向完全不同(甚至更糟)的东西?

欢迎所有反馈!

最佳答案

当您的 Controller 扩展 View 时,在 Java 的意义上,您的 Controller “是一个” View 。因此,在这种情况下,可以肯定地说您违反了 mvc 模式。

关于java - 应用MVC模式的时候让controller继承view可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237689/

相关文章:

java - 代码错误 "org.openqa.selenium.remote.DriverCommand.NEW_SESSION"

c# - 了解 MVC 模式

java - 表头未显示

java - 如何监听屏幕插图何时发生变化?

java - 如何从具有两个包含相同类型对象的列表的对象生成哈希码

java - 寻找基于输入参数的类创建和配置模式

java - Realm 迁移重复值

sql - Coldfusion Excel 导出

iPhone 和 iPad 开发 - 良好的设计架构以实现最大的可重用性

java - 动态更改 JTextPane 中文本的字体