我将启动一个Java项目来开发桌面应用程序。什么用作表示层模式(MVC,MVP,MVVM或…)?
…如果可能的话,给出一些可行的小例子… :-)
其实,你在寻找最终的帖子是
这样回答
这个答案
从卡斯滕Lentzsch共同领导(JGoodies数据的名望)在
秋千框架和最佳实践
旋启式框架和最佳实践
主题。
你好,
多年来,我一直在编写Swing应用程序,很多人都觉得它很优雅。我还教开发人员如何有效地使用Swing:如何构造和组装应用程序,如何绑定和验证日期以及如何在Swing中查找,设计,布局和实现设计良好的屏幕。
我想说的是,Swing在网上没有“最佳实践”。而且我怀疑任何人都不能提供“最佳”实践,因为这将需要Swing开发人员和解决方案提供商之间就方法,技术上可行的,易于理解的和可使用的方法进行讨论。另外,最佳实践将解释谁可以达到什么结果质量,并描述生产时间和生产成本;但我永远无法在线或在Swing书中找到这些信息。
我认为,缺乏良好的实践经验和信息,如何构建Swing应用程序是开发人员从使用Swing开始时面临的最大障碍。我与之合作的大多数开发人员在寻找设计,实现布局,构建面板,绑定数据,处理事件以及安排不同的代码部分和代码层方面都很缓慢。我见过的许多Swing应用程序都很烂;除了视觉设计不佳之外,它们还难以理解,即使很小的改动也要付出很多代价。通常,开发人员不知道在哪里放置什么代码,如何将关注点分开,如何将事物捆绑在一起,如何与Actions一起使用,如何启动应用程序以及如何存储和恢复UI状态?大多数开发人员缺乏遵循的指南。
但是我发现,即使仅靠手工操作,普通开发人员也可以在大约3到10天内与Swing配合良好。您的几乎所有问题都可以通过代码,库,应用程序体系结构,模式,通用编程实践,精心设计的示例,教程等来回答或解决。我讲授了围绕3层体系结构构建的Swing开发过程。基于生产布局系统将域,工具和表示层分开。即使大多数部分都以编程方式完成,开发人员也可以快速获得结果,并且代码和视觉设计都变得相当一致。这可以极大地提高开发人员的生产率-
在某种程度上,Swing工作只占项目工作的一小部分。所以,你可以做什么?我强烈建议研究Martin
Fowler的草案,以进一步了解“企业应用程序体系结构的模式”。我发现这些模式在Swing和Swing团队中非常有效-
即使对于Swing和Swing架构的新开发人员也是如此。我首先选择以下模式:“演示模型”,“分离域”和“分离演示”。我个人更喜欢Presentation
Model(Smalltalkers应用模型),而不是Model-View-Presenter模式(MVP)。但是,MVP是一个经过充分研究的真实选择。Fowler的模式可以与3客户端层体系结构结合使用,该体系结构可以很好地扩展到中等规模的Swing应用程序。它由域层,表示层和中介模型层组成。我已经在数据绑定演示中概述了此体系结构。基于MVP的应用程序也可以在这三个客户端层中构建。
Swing应用程序的关键任务是数据绑定:如何将域对象和域对象属性连接到Swing组件。基本上,您可以来回复制数据,也可以将适配器链从域对象构建到UI组件。复制方法易于理解,通常是Swing或数据绑定新手的首选。我会说这是一个不错的选择。另一方面,复制使同步视图变得更加困难。适配器链和自动或半自动更新可以大大减少将域数据绑定到UI所需的代码量。缺点是这种方法很难理解。如您所指出的那样,Swing对于可用于绑定文本字段的可重用且灵活的模型并没有提供很好的抽象。Document接口不适用于常规数据访问。有一些库可提供ValueModel接口,该接口仅用于为单值数据添加通用,强大且灵活的模型:字符串,布尔值,数字,日期等。
我不了解解释真正的Swing应用程序开发过程的Swing书。理想情况下,这样的书将结合上面提到的模式,体系结构和数据绑定技术,并描述如何在Swing中实现它。无论如何,Smalltalk应用程序开发过程已有10年的历史。Oracle的JClient体系结构和文档还不够完善,但对于Java开发人员来说可能更容易阅读。我提供了有关数据绑定的演示,涉及Fowler模式,三层体系结构以及这些模式的Swing实现和自动数据绑定。我的绑定库的教程资源可以帮助您熟悉适配器链和ValueModel接口。
选择了架构和桌面模式集之后,您应该解决以下更基本的Swing任务:1)通过选择一组适合您目标平台集的专业外观来改善外观,2)选择可以帮助您的布局系统快速构建设计良好且一致的屏幕,3)选择数据验证解决方案,4)抓取一揽子解决方案以应对日常的Swing任务。
有几个项目概述了Swing架构,解决了数据绑定和典型的Swing任务,例如:Sun的JDNC,Oracle的JClient / ADF,Spring
RCP,NetBeans平台。我提供了一个基于开源JGoodies库的Swing解决方案商业套件,并为所有公共JGoodies工具和演示添加了解决方案和资源包。这些资料旨在说明如何将上述所有问题联系在一起。让我添加有关所谓的“ MVC”框架的标准警告。Swing不使用MVC,而是使用修改后的模式。MVC经常被错误引用和误解-
特别是在Swing的上下文中。此外,MVC适用于UI组件,而不适用于应用程序。因此,我建议寻找能反映并使用Swing体系结构而不是MVC的概念,解决方案和库。MVC模式的发明者社区在1993年左右引入了ApplicationModel(现在称为Presentation
Model)。MVP随后进行了跟进。在我看来,这两种模式对Swing而言比MVC有用得多。最近,将Presentation
Model模式带给更多观众的环境转向了新的体系结构:“ Pollock”。感兴趣的读者可以在Google上搜索以了解与通常与Presentation
Models组合在一起的适配器链有何不同。最后但并非最不重要的个人声明。与以前使用的其他工具箱或框架相比,我可以更好地使用Swing。我可以用更少的代码来做更多的事情,代码的结构更好,更易于维护,而且我很快就能得到结果。
希望这可以帮助。最好的问候,Karsten Lentzsch
参考:Fowler的进一步模式-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
Spring RCP项目主页 -http:
//www.springframework.org/spring-
rcp.html
NetBeans平台主页-http:// www。
netbeans.org/products/platform/
JGoodies Swing
Suite-http://www.jgoodies.com/products/index.html
如果您不认识Karsten和JGoodies,那么请相信我,这个人真的知道他在说什么。我热烈建议仔细阅读他的回答 和
他发布的材料作为参考。更具体地说,一定要检查他的“ 桌面模式和数据绑定”
演示。令人惊讶的是,我更喜欢旧版本而不是新版本。
让我引用他关于MVC和MVP的幻灯片:
然后从摘要:
将域与演示文稿分开!
那是 分开的介绍 。
单独的 自主视图( 如果适用)
~~~~
但是在解释这一点上,我做不了比卡尔斯滕更好的工作,我充其量可以这样解释。所以就读他!
也可以看看用于学习的Desktop Java演示 (更准确地说是Scott
Violet的答案)。
本文向大家介绍MVC、MVP和MVVM分别是什么_动力节点Java学院整理,包括了MVC、MVP和MVVM分别是什么_动力节点Java学院整理的使用技巧和注意事项,需要的朋友参考一下 一、MVC MVC模式的意思是,软件可以分成三个部分。 视图(View):用户界面。 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下。 1.View 传送指令到 Co
FlyTour是Android MVVM+MVP+Dagger2+Retrofit+RxJava+组件化+插件组成的双编码架构+双工程架构+双语言Android应用开发框架,通过不断的升级迭代该框架已经有了十个不同的版本,5.0之前工程架构采用gradle配置实现组件化,5.0之后的工程架构采用VirtualAPK实现了插件化,5.0之前采用Java编码实现,5.0之后采用Kotlin编码实现,编
问题内容: 想要改善这篇文章吗? 提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 当超越RAD(拖放和配置)构建用户界面的方式时,许多工具鼓励您使用三种设计模式,分别称为Model- View- Controller ,Model- View- Presenter和Model- View-ViewModel。我的问题包括三个部分: 这些模式解决了哪些问题?
如果我们在Google上搜索“MVC,MVP和MVVM设计模式之间的差异”,那么我们可能会得到一些从理论上讨论MVC,MVP和MVVM设计模式之间差异的URL: MVP 在无法通过“DataContext”绑定的情况下使用。Windows窗体就是一个很好的例子。为了将视图与模型分离,需要一个演示者。由于视图不能直接绑定到演示者,因此必须通过接口(IView)将信息传递给视图。 MVVM 用于可能通
本文向大家介绍说说你对MVC、MVP、MVVM模式的理解相关面试题,主要包含被问及说说你对MVC、MVP、MVVM模式的理解时的应答技巧和注意事项,需要的朋友参考一下 ickt-5: https://www.cnblogs.com/keitsi/p/5764785.html
在传统的MVC架构的应用中,你有三种组件:数据模型、视图以及试图控制器。数据模型保持你的数据,而视图用来呈现这些数据。控制器介于这两个组件之间调解所有的交互。 希望于Apple已经很好地测试过它的业务逻辑了。剩下的视图控制器它很少进行单元测试。 当新的数据到达时,model会通知ViewController(通常是通过键-值观察(KVO)的方式),然后ViewController会更新