使用什么? MVC,MVP或MVVM还是…?

我将开始一个Java项目来开发一个桌面应用程序。 什么用作表示层模式(MVC,MVP,MVVM或….)?

…如果可能的话,用一些小小的例子… 🙂

实际上,你正在寻找的最终的post是来自Karsten Lentzsch(JGoodies的名气)在Swing框架和最佳实践中的回答 。 如果你不认识Karsten和JGoodies,那么相信我,这个人真的知道他在说什么。 我热烈推荐仔细阅读他的回答他发布的材料作为参考。 更具体地说,一定要检查他的桌面模式和数据绑定演示文稿。 令人惊讶的是,我更喜欢旧版本到新 版本 。

让我引用他关于MVC和MVP的幻灯片:

  • 是的, Swing在内部使用扩展的MVCforms
  • 但是MVC是用于组件的,MVP是用于应用程序的

然后从总结:

  • 从演示文稿分离域!
    这是分开的演示文稿
  • 独立的自主视图(如果适用)
  • selectMVP演示模型

  • Swing使演示模型变得简单
  • PM需要一个绑定解决scheme

但是在解释这个问题上,我不能比卡尔斯顿做得更好,我完全可以解释他。 所以只要读他!

也可以看看桌面Java演示的学习 (更准确地说,斯科特·紫罗兰的答案 )。

下面是一篇文章,它比较了Java中用于实现三次相同屏幕的三种GUI模式:

使用ZK Java AJAX框架实现事件驱动的GUI模式,Simon Massey,Sachin K Mahajan

由于不同的框架和语言在MVP,MVC,MVVM和MVVMP等等方面有轻微的变化,所以文章谨慎地参考由Martin Fowler给出的长名称的模式而不是容易争论的短手M__ monikers关于。

显然,ZK是一个类似于网页或移动桌面的编程环境,但是这些模式同样适用于Swing或另一个胖客户端框架。 然而,对于某个桌面环境没有一个好的数据绑定框架,尝试MVVM并不是很可行。 因此,在这个早期的演示文稿中,“演示模型”模式被赋予了Model-View-Binder的名字“MVB”,作为将其称为“MVVM”的替代scheme:

ZK中的devise模式:作为Model-View-Binder的Java MVVM,Simon Massey

你可以看看这篇文章:你好ZK MVVM 。 ZK同时支持MVP和MVVM,本文可能会提供一些见解 – 编程模型类似于Swing,认为它是一个Web框架。

我也build议你使用谷歌来查找更多的信息,因为你的问题是非常模糊的。 无论如何,因为你想用Java来做你的桌面应用程序,你可能会使用Swing,我只想指出Swing是devise了一个MVC模式。 无论如何,您可以使用一些额外的界面轻松地将其修改为MVP。

如果你不确定模式,我会build议使用MVC。 你会发现更多的例子。

我的2美分。