MVC with swing implementation java



我很困惑MVC将如何与GUI swing应用程序协同工作。我曾经使用过PHP MVC,但那完全不同。我理解MVC的含义。但让我感到困惑的是在GUI swing编程中做这件事的不同变体。从网络上不同的文章中很难得出特定的结论。谁应该知道谁?我的意思是模型视图和控制器之间的关系是什么?控制器应该知道模型和视图吗?如果可能的话,我想用一个简单的例子来说明这一点(喜欢和简单的按钮,它将更新标签)

若我并没有提出更多的要求,我想得到MVC书的建议,这本书的作者Swing在脑海中。

如果你问10个不同的人"MVC是什么意思?"你可能会得到10个不同答案。我个人偏爱MVC的定义(至少对于非web应用程序):

模型视图控制器设计模式

基本上,控制器的唯一功能是在应用程序启动时实例化模型和视图,并将它们相互连接。其他一切都只是将程序的数据和逻辑(模型)与您选择向用户显示它并允许用户交互(视图)的方式适当地解耦。

Java对MVC有许多不同的解释。我会尽量提供一个基本的解释,但正如我所说,其他人可能对此持不同意见。

MVC的理论"纯"解释包括以下内容:

  • 模型不了解视图
  • 视图不了解模型
  • 控制器连接模型和视图的方式是,它将数据从模型提供给视图,处理视图或模型中的"事件",并根据视图中发生的事情相应地更新模型。它还可以只处理视图中的事件,并将结果提供给视图,例如计算器

这里有一个可能/简单的例子:

这个假设应用程序的目标是在模型中获取一个String,将其发送到GUI(视图),允许用户更改字符串,并更新模型中前面提到的String值。这个例子或多或少是解耦的。

型号:

  • 包含字符串变量

视图:

  • 显示字符串变量
  • 接受允许更改字符串的用户输入

控制器("胶水"):

  • 通过字符串的自定义侦听器侦听模型
  • 将此字符串提供给视图以供用户查看
  • 通过自定义侦听器侦听视图,以便用户更改String
  • 获取这个新字符串并将其提供给模型,从而更新原始字符串

MVC背后的一个关键是观察者模式理论。

尽管使用维基百科会冒一定的风险,但它通常能很好地传达MVC背后的基础知识。http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

以下是关于"纯"实现和解释来源的讨论链接。http://www.youtube.com/watch?v=ACOHAR7PIp4

这里有一个链接,对类似的MVC解释及其背后的理论进行了很好的解释:http://www.youtube.com/watch?v=CVxt79kK3Mk

最新更新