Java MVC模式和Swing

Java MVC模式和Swing,第1张

Java MVC模式和Swing

我强烈推荐给MVC的书籍是Freeman和Freeman撰写的“ Head First Design Patterns”。他们对MVC有高度全面的解释。

简要总结

  1. 你就是用户-你与视图进行交互。视图是你进入模型的窗口。当你对视图执行某些 *** 作(例如单击“播放”按钮)时,视图将告诉控制器你做了什么。处理该任务是控制器的工作。

  2. 控制器要求模型更改其状态。控制器执行你的动作并解释它们。如果单击按钮,则控制器的工作就是弄清楚这意味着什么以及如何基于该 *** 作来 *** 纵模型。

  3. 控制器也可能要求视图更改。当控制器从视图接收到一个动作时,它可能需要告诉视图作为结果进行更改。例如,控制器可以启用或禁用界面中的某些按钮或菜单项。

  4. 当状态改变时,模型会通知视图。当模型中的某些内容发生更改时,根据你执行的某些 *** 作(例如单击按钮)或其他内部更改(例如播放列表中的下一首歌曲已开始),该模型会通知视图其状态已更改。

  5. 视图向模型询问状态。该视图直接从模型获取其显示的状态。例如,当模型通知视图新歌曲已开始播放时,该视图向模型请求歌曲名称并显示它。由于控制器请求对视图进行某些更改,因此视图可能还会向模型询问状态。

在此处输入图片说明 来源(如果你想知道“奶油控制器”是什么,请考虑一个奥利奥饼干,其中控制器是奶油中心,视图是顶部饼干,模型是底部饼干。)

嗯,如果你有兴趣,可以从这里下载有关MVC模式的相当有趣的歌曲!

Swing编程可能会遇到的一个问题是将SwingWorker和EventDispatch线程与MVC模式合并。根据你的程序,你的视图或控制器可能必须扩展SwingWorker并覆盖

doInBackground()
放置资源密集型逻辑的方法。这可以很容易地与典型的MVC模式融合,这是Swing应用程序的典型特征。

编辑#1:

此外,将MVC视为各种模式的组合非常重要。例如,可以使用观察者模式(需要将视图注册为模型的观察者)来实现模型,而控制器可以使用策略模式。

编辑#2:

另外,我想特别回答你的问题。你应该在View中显示表格按钮等,这显然会实现一个ActionListener。在你的

actionPerformed()
方法中,你将检测到事件并将其发送到控制器中的相关方法(请记住,该视图包含对控制器的引用)。因此,当单击按钮时,视图会检测到事件,并将其发送到控制器的方法,控制器可能会直接要求视图禁用按钮或其他 *** 作。接下来,控制器将与模型交互并修改模型(该模型将主要具有getter和setter方法,以及一些其他方法来注册和通知观察者,依此类推)。修改模型后,它将立即调用已注册观察者的更新(在你的情况下为视图)。因此,视图现在将自行更新。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5146020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存