Java GUI应用程序的MVC/MVP/MVVM框架

6
有人能推荐一个(最好是开源的)Java桌面应用程序中将GUI与模型解耦的框架吗?

1
已经有 Pascal Thivent 的精彩答案了,链接在这里:https://dev59.com/-nI95IYBdhLWcg3w5SOh 简而言之:MVC 用于组件,MVP 用于应用程序。 - Destroyica
5个回答

5
基本上,将GUI模型与核心Java代码解耦最好使用数据绑定库。也就是说,您有POJO业务代码,有GUI组件代码,而且您不想在更新视图和实现业务逻辑时一直编写大量逻辑来同步它们。所以不要这样做。找到一个成熟的GUI小部件数据绑定框架并学习它;让它保持屏幕控件与您的POJO代码同步。 JGoodiesbeanbindings是绑定到OO模型的Swing变体的良好示例。JGoodies的核心部分是开放源代码的。如果您转到jgoodies网站上的/articles,则有有关模式和数据绑定的文章。虽然每个绑定框架都有不同的类,但编写良好干净的代码的模式在GUI框架和绑定框架之间是可移植的。
如果您下载现在开放源代码的WindowsBuilderPro工具,则其中包含Swing和SWT执行良好数据绑定的优秀示例。swing jphonebook示例使用beanbindings库。WindowsBuilderPro是一个拖放GUI构建器;您过去必须付费才能获得它,作为一个与主要免费GUI库一起使用的领先拖放GUI构建器。它被谷歌收购并开源,以便他们可以增强其用于GWT(Google Web GUI框架)的图形屏幕构建支持。
该GUI构建器工具既有优秀的示例代码,也是一个优秀的开源工具。它在Swing和SWT GUI库中都使用了电话簿的相同示例,以演示其拖放GUI构建器工具的功能。因此,这是一种学习数据绑定时比较和对比Swing和SWT的好方法。

3

Java Swing 实际上恰好为此目的很好地使用了MVC模式。


2
在MV*中,“Model”对我来说主要是指领域模型,而ListModel、TableModel等则不是;它们更接近于Presenter或ViewModel。 - Alexey Romanov
2
一个通用框架如何提供特定领域模型组件? - Stephen C
当然不是。我只是在暗示他们的名字有点错误 :) - Alexey Romanov

3

我强烈建议您尝试ZK框架。直到今天,我都没有找到过如此强大的框架。在我的公司,我们使用最新的模式(如MVVM)在几周内应用了新项目。编程风格非常像开发传统的“桌面”应用程序。

PS:我与ZK人员无任何关系,我只是使用他们的框架。


1
我喜欢ZK..但它是一个Web框架。这个问题要求一个桌面应用程序框架。 - Sean Connolly

1
从你对Swing是一个桌面应用程序的MVC框架的建议的反应中,我认为你真正需要一些生成器框架,可以从更高级别的规范生成“模型”和“视图”代码。我比较熟悉的示例包括Eclipse EMF、GEF和相关技术。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接