我将开始一个Java项目开发桌面应用程序。 什么为表示层模式中使用(MVC,MVP,MVVM还是....)?
......如果可能的话,有一些工作的小例子... :-)
我将开始一个Java项目开发桌面应用程序。 什么为表示层模式中使用(MVC,MVP,MVVM还是....)?
......如果可能的话,有一些工作的小例子... :-)
其实,你在寻找最终的帖子是这样回答 这个答案从卡斯滕Lentzsch共同领导(的JGoodies数据名望)在秋千框架和最佳实践 摇摆框架和最佳实践主题。
你好,
我已经写的Swing应用了好几年,很多人觉得优雅。 我教开发商在与Swing工作效率:如何构建和组装应用,如何绑定和验证日期,以及如何发现,设计,布局和Swing中实施精心设计的屏幕。
我说有没有“最佳实践”为Swing可在网上。 我怀疑任何人都可以提供“最好”的做法,因为这将需要大约方法Swing开发者之间的讨论解决方案提供商,是什么在起作用以及技术上的,哪些是容易理解的,而努力着。 此外,最佳做法的解释谁能够达到什么样的成绩的好坏,他们会描述了生产时间和生产成本; 但我从来没有在网上或一个Swing本书中找到这些信息。
在我看来,缺乏良好做法和如何构建一个Swing应用程序与摆动起动时,开发人员面临的最大障碍。 我曾与大多数开发人员都在寻找设计,实施布局,建筑板材,结合数据,处理事件,并安排不同的部分代码和代码层慢。 我见过很多的Swing应用程序吸; 除了他们可怜的视觉设计,他们很难理解,甚至小的变化成本很大。 通常,开发商根本不知道往哪里放什么代码?如何分离?关注如何配合的东西放在一起?如何与操作工作?如何启动一个应用程序?以及如何存储和恢复UI状态? 大多数开发人员缺乏指引,。
但我发现,平均每个开发者可以使用Swing工作得很好,如果只是采取的手 - 在约3至10天。 几乎所有的问题都可以回答或代码,库,应用架构,模式,一般的编程实践,精心设计的例子,教程等我教是围绕一个三层架构构建的Swing开发过程涉及的是方式隔开域,工具和表示层和基于一个生产布局系统。 尽管大多数零件编程方式开发人员快速得到结果,并且两个代码和可视化设计变得相当一致。 这可以提高开发人员的生产力很多 - 的程度,Swing的工作需要项目工作的显著小部分。
所以,你可以做什么? 我强烈建议学习Martin Fowler的草案进一步“的企业应用架构模式”。 我发现,这些模式与Swing和Swing团队工作非常好 - 甚至对开发商是新的摇摆和摆动架构。 我先挑了以下的模式:“演示模式”,和“分隔演示”“域隔离”。 我个人倾向于演示模型(应用模型Smalltalkers),在模型 - 视图 - 演示模式(MVP)。 然而,MVP是一个真正的和充分研究替代方案。
福勒的模式可以与中度大型Swing应用程序扩展以及3客户端三层架构相结合。 它由一个域层,表示层,以及中介模型层的。 我在我的数据绑定介绍概述了这种架构。 基于MVP,应用程序可以在这3个客户端层进行结构化了。
对于Swing应用程序的主要任务是数据绑定:如何域对象和域对象属性连接到Swing组件。 基本上,您可以复制数据来回,或从你的域对象的UI组件构建适配器链。 该复制方法是很容易理解,并常为那些谁是新的Swing或数据绑定的首选; 我会说这是一个不错的选择。 在另一方面,复制使得它更难的看法同步。 适配器链和自动或半自动更新可以显著降低的必要的代码量域数据绑定到UI。 缺点是,这种方法更难理解。 正如您所指出的那样,Swing还提供了可用于绑定文本字段的可重复使用和灵活的模式没有大的抽象; Document接口是不恰当的通用数据访问。 有迹象表明,提供这只是为了增加一个通用的,强大的,灵活的模式为单值数据的ValueModel接口提供一些库:字符串,布尔值,数字,日期等。
我不知道,说明真正的Swing应用程序开发过程中一个Swing的书。 理想的情况是这样一本书将结合模式,架构和数据绑定上述技术,并会介绍如何实现它在Swing。 无论如何,有一个10岁的文档的Smalltalk的应用程序的开发过程,做到了这一点。 Oracle的JClient中的架构和文件是不是完整,但可以为Java开发人员更容易阅读。 我提供了一个有关数据绑定为约福勒模式,3层结构和一种用于这些模式的Swing实现和自动数据绑定介绍。 我绑定库的教程来源可以帮助您与适配器链和硒lueModel接口aquainted。 对于MVP模式最好的文档可以在海豚Smalltalk的文档中找到。
一旦你choosen你的架构和桌面样式集合,您应该解决以下更基本的Swing任务:1)通过选择一套专业的外观和感觉适合您的目标平台集改善外观,2)选择布局系统,可以帮助你建立良好的设计和一致的屏幕很快,3)选择数据验证解决方案,以及4)抓住日常摇摆任务解决方案包。
有几个项目,规定了一个Swing架构,解决了数据绑定和典型的摇摆任务,例如:Sun的JDNC,Oracle的JClient中/ ADF,春节RCP,NetBeans平台。 我提供了一个基于开源的JGoodies库,并增加了解决方案和来源所有公共JGoodies数据的工具和演示的袋子摆解决方案的商务套房。 这些来源的目的是解释如何配合上面提到的所有问题一起。
让我补充有关所谓的“MVC”的框架我的标准的警告。 摇摆不使用MVC,它采用了改良的模式。 MVC经常断章取义和误解 - 尤其是在摆动的情况下。 此外,MVC是良好的UI组件,而不是应用程序。 因此,我建议寻找反映,并与Swing的架构,而不是MVC工作的概念,解决方案和图书馆。
MVC模式的发明者社区引入的应用模型(现称为呈现模型)1993年左右; MVP其次稍晚。 在我看来,这两种模式都为Swing比MVC有用得多。 近日带来了Presentation Model模式更多的受众环境转移到一个新的架构:“波洛克”。 有兴趣的读者可以用google来看看如何从经常与演示模型相结合的适配器链不同。
最后但并非最不重要个人陈述。 我可以工作与Swing比其他工具包和我以前使用的框架要好得多; 我可以做到事半功倍的代码,代码结构更好,更容易维护,而且我很快得到结果。
希望这可以帮助。 最好的问候,卡斯滕Lentzsch共同领导
参考文献:福勒的进一步模式- http://martinfowler.com/eaaDev数据绑定演示- http://www.jgoodies.com/articles/ Smalltalk的应用开发过程- http://www.cincom.com/downloads/pdf/ AppDevGuide.pdf MVP模式文档- http://www.object-arts.com/EducationCentre/Patterns/MVP.htm Sun的JDNC项目主页- http://jdnc.dev.java.net/ Oracle的ADF常见问题- HTTP:/ /www.oracle.com/technology/products/jdev/htdocs/905/adffaq_otn.html春RCP项目主页- http://www.springframework.org/spring-rcp.html ,NetBeans平台主页- HTTP:// WWW。 netbeans.org/products/platform/的JGoodies摇摆套房- http://www.jgoodies.com/products/index.html
如果你不知道卡斯滕和JGoodies数据,那么相信我,这家伙真的知道他在说什么。 我热烈推荐仔细阅读他的答案,他张贴作为参考材料。 更具体地讲,一定要检查自己的桌面模式和数据绑定演示。 出人意料的是,我更喜欢老版的新的 。
让我引用他的幻灯片约MVC VS MVP:
然后从概要:
但我不能做在解释这个比卡斯滕一个更好的工作,我充其量只能套用他。 所以,刚读了他!
也或许看看桌面Java演示学习 (更精确地斯科特紫的答案 )。
这里是一个比较Java中3种GUI模式来实现相同的屏幕三次的文章:
实现使用Java的ZK AJAX框架,西蒙梅西,萨钦ķ马哈詹事件驱动的GUI模式
由于不同的框架和语言有什么让人感到轻微的变化是MVP,MVC,MVVM和MVVMP等等等等的文章是仔细由Martin Fowler的不是手短M__绰号这是容易引起争论给出的长名称来指代模式关于。
显然ZK是一个Web或移动台式机一样的编程环境,但该模式同样适用于秋千或其他胖客户端框架。 但是没有一定的桌面环境,良好的数据绑定框架,它不是试图MVVM非常可行。 因此,在这种早期的演示文稿“演示模式”模式被赋予绰号“MVB”为模型 - 视图 - 粘结剂作为替代称之为“MVVM”:
设计模式在ZK:Java的MVVM为模型-视图-捆扎机,西蒙·梅西
你可以看看这篇文章:你好ZK MVVM 。 ZK支持MVP和MVVM,本文可能会提供您所选择的一些见解 - 编程模型类似于秋千,认为这是一个Web框架。
我也建议你使用谷歌找到更多的信息,因为你的问题实在是模糊的。 无论如何,既然你想做的事在Java中的桌面应用程序,你可能会使用Swing,我只是想指出的是摇摆的设计用一记MVC模式。 反正你可以很容易地使用一些额外的接口,其修改为一个MVP。
如果你不确定的模式,我会建议使用MVC。 你会发现更多的例子。
我的2美分。