7

在意识到我完全忽略了 MVC 模式后,我尝试在具有 Swing 视图的应用程序中利用该概念。我现在已经阅读了大多数关于 Swing 的 MVC 主题的帖子,但仍然有点困惑,因为它对我来说太复杂了,我认为我需要一些基本的说明,所以我不会误会小路。

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

除了这些想法,我的正确问题是:

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

4

2 回答 2

10

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

如前所述,MVC 可帮助您拥有美观、可维护且易于阅读的代码,并遵循编程范式和良好实践。

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

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

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

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

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

Java项目1:application-data-model(包含所有与数据管理相关的代码:entities、dtos、beans、daos)

Java 项目 2:application-core-controller(包含所有业务逻辑和功能,如果您想让代码在与视图相关时更加“透明”,可以在此处使用外观模式)

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

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

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

此致。

于 2013-05-06T13:36:59.597 回答
3

首先是对 MVC 的基本理解的 URL

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

现在是在 Swing 应用程序中实现它的方法。不要将控制器功能与侦听器功能混淆。

  1. UI 控件和附加到它们的侦听器应在您的视图类中定义。
  2. 在任何情况下,只要您需要调用业务逻辑,就需要调用控制器类。就像从数据库中获取一些值一样。
  3. 控制器类应该与您的模型对话以获取数据并在需要时对其进行操作。
  4. 模型类应该对数据起作用。

使用 MVC 的想法是减少冗余代码和更易于管理的代码。因此,如果您正在进行一些计算/操作,则可以将它们移至控制器。可以从需要相同内容的不同视图调用控制器。类似地,多个控制器可以使用模型来获取数据。

于 2013-05-06T12:07:27.987 回答