使用什么? 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美分。