桌面应用程序中的MVC和Swing

7 java model-view-controller swing design-patterns

在意识到我完全忽略了MVC模式后,我试图在具有Swing视图的应用程序中使用该概念.我现在已经阅读了关于MVC主题的大部分帖子,但仍然有点困惑,因为它对我来说太复杂了,我想我需要一些基本的澄清,所以我不会出错路径.

我也想知道在实际项目中使用MVC有多常见.许多在线教程似乎忽略了控制器并将其与模型混合在一起,而我对XSTL的业务逻辑功能感到困惑.为什么要从JSP视图中寻址数据源?

抛开这些想法,我的正确问题是:

如果你有一个Swing组件,那么该Swing类中的事件监听器是否应该通过在POJO控制器类中调用(可能是静态的?)方法来更新组件状态,而POJO控制器类又从模型中获取适当的业务逻辑,该模型由POJO组成类层次结构和相关的持久性?

Mar*_*aje 10

我作为自由职业者工作了很长时间,几乎90%的项目都是关于Java Swing(桌面应用程序).还有很多项目涉及从Visual Fox Pro等语言迁移到Java,这很痛苦,因为困难的部分不是在已经完成的逻辑中思考,困难的部分是把代码弄得乱七八糟地把它转过来根据良好实践和使用设计模式制作好看的代码,这就是为什么在脑海中制作模式或地图是如何根据模型,视图,控制器的概念分离代码的好主意.

所提到的MVC可以帮助您获得外观漂亮,易于维护且易于阅读的代码,以及遵循编程范例和良好实践.

视图:显然,在Swing的情况下,与用户(用户界面)交互的部分,您的窗口,框架,面板以及涉及应用程序所需图形组件的所有代码.

控制器:涉及您为应用程序建立的核心或业务逻辑,在这个"层"中,您应该包括功能和"我的应用程序将如何实现目标?".

模型:与您管理的数据相关,例如,您的实体和类,它们代表您要管理或提供维护的数据.

应用MVC并不是那么难,但正如我所提到的,当您必须将代码从非应用MVC结构迁移到MVC结构化应用程序时,有时可能会很痛苦.使用MVC开始编码更容易.

我习惯的一种方法是使用maven并将我的应用程序分成小的"模块",当然,你不需要maven,我只是觉得它在那一刻很有用,但无论如何你可以尝试练习或获得通过将应用程序分成小项目来用于MVC,例如:

Java Project 1:应用程序数据模型(包含与数据管理相关的所有代码:实体,dtos,bean,daos)

Java Project 2:application-core-controller(包含所有业务逻辑和功能,如果您希望在与视图相关时使代码更"透明"),可以在此处使用Facade模式)

Java Project 3:application-view-ui(包含所有面板,框架和图形组件)

以这种方式工作帮助我(并强迫我)习惯于分离我的代码,并密切关注我正在研究的项目真正重要的事情.例如,如果我在应用程序数据模型上,我专注于数据模型,我不会考虑业务逻辑或图形界面.

很长的解释,也许有人可以做得更好,但希望我能帮助你或至少帮助你.

最好的祝福.