- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java SE应用程序设计与MVC
内容 - 什么是模型-视图-控制器(MVC)? - MVC组件之间的交互 - 修改了MVC设计 - 使用修改的MVC - 问题与应用设计 - 常用Swing组件监听器 - 结论
什么是模型-视图-控制器(MVC)?
如果你已经编程的图形用户界面(GUI)在过去10年左右的图书馆,你有可能遇到的模型 - 视图 - 控制器(MVC)设计。 MVC最早是由引进特里夫Reenskaug ,一个Smalltalk的开发者在施乐帕洛阿尔托研究中心在1979年,并有助于去耦数据访问和业务逻辑从它显示给用户的方式。 更精确地说,MVC可细分为三个要素:
模型 -模型表示数据和支配访问这个数据的更新规则。 在企业软件,模型经常作为一个现实世界的过程的软件近似。
视图 -视图呈现模型的内容。 它指定了数据模型究竟应该如何呈现。 如果模型数据的变化,根据需要的视图必须更新它的介绍。 这可以通过使用推模式 , 即认为其自身注册到模型更改通知,或拉模式 ,其中的观点负责调用模型时,它需要检索最新的数据来实现。
控制器 -控制器转换的观点付诸行动,该模型将执行用户的交互。 在一个独立的GUI客户端,用户交互可能是按钮单击或菜单选择,而在企业的Web应用程序,它们将显示为GET和POST HTTP请求。 根据上下文,控制器还可以选择一个新的观点 - 例如,结果的网页 - 呈现给用户。
MVC组件之间的交互
本节将仔细看看一种方式来实现图1中的在应用程序的上下文中的Java平台标准版6 (Java SE 6中)。 一旦模型,视图和控制器对象被实例化,发生以下情况:
该视图注册为模型上的监听器。 任何更改模型的基础数据直接导致广播变更通知,该观点得到。 这是前面所述的推模型的一个例子。 请注意,该模型是不知道的视图或控制器 - 它只是改变广播通知给所有感兴趣的听众。
该控制器绑定到视图。 这通常意味着,那些在视图上执行的任何用户操作会在控制器类中调用一个注册的侦听器方法。
所述控制器被赋予一个引用到底层模型。
一旦用户与视图进行交互时,将发生以下操作:
该观点认识到,一个GUI操作 - 例如,按下一个按钮或拖动滚动条 - 已发生,使用注册时,这样的动作发生时要调用的侦听器方法。
该视图调用控制器上适当的方法。
控制器访问模型,有可能更新它在适当的用户动作的方法。
如果模型已经改变,它更改通知感兴趣的听众,如视图。 在某些架构中,控制器也可能是负责更新的视图。 这是常见的基于Java技术的企业应用程序。
图2更详细地显示这种相互作用。
图2:Java SE应用程序使用MVC
正如本文前面所提到的,该模型不带引用的观点,而是使用一个事件通知模型来通知改变的有关方面。 其中一个这样强大的设计所带来的后果是,很多观点可以有相同的底层模型。 当数据模型发生变化时,每个视图是由一个属性更改事件通知,并可以相应地进行自我更新。 例如,图3显示了使用相同的数据模型两种看法。
图3。 多个视图使用相同的型号 修改了MVC设计
最近的一个实现MVC设计场所的模型和视图之间的控制器。 本设计中,这是常见的苹果可可框架中,示于图4。
图4。 一个MVC设计放置控制器模型和视图之间
这样的设计和更传统的版本的MVC之间的主要区别是,在模型对象的状态变化的通知是通过控制器传送到视图。 因此,控制器介导数据的模型和视图对象之间在两个方向上的流动。 查看对象,一如既往地使用控制器用户操作转化为对模型属性的更新。 此外,改变模型状态传达通过应用程序的控制器对象来查看对象。
因此,当所有三个组件被实例化,视图和模型都将注册到控制器。 一旦用户与视图进行交互,该事件几乎是一样的:
该观点认识到,一个GUI操作 - 例如,按下一个按钮或拖动滚动条 - 已发生,使用注册时,这样的动作发生时要调用的侦听器方法。
该视图调用控制器上适当的方法。
控制器访问模型,有可能更新它在适当的用户动作的方法。
如果模型已经改变,它更改通知感兴趣的听众。 然而,在这种情况下,该变化被发送到控制器。
为什么采用这样的设计? 使用这种改良的MVC有助于从视图中更完全解耦模型。 在这种情况下,控制器可以决定,它希望找到与控制器注册一个或多个模型的模型属性。 此外,它也能提供这种效果对于注册在其一个或多个视图模型的属性更改的方法。
用改进的MVC
本节中的文章将告诉您如何将这个设计付诸实践,开始与模型。 假设你想使用带有五个属性一个简单的显示模式来绘制一些文字。 代码示例1所示,你可以用它来创建这样一个模型一个简单的组件。
代码示例1
公共类TextElementModel扩展AbstractModel
{
私人字符串
您可能关注的文档
最近下载
- 《七巧板》完整版教学课件.pptx VIP
- 定时交通灯控制设计.pdf VIP
- 浙大中控DCS系统操作规程.doc VIP
- 学校家长安全责任书.docx VIP
- 北师大版小学数学六年级上册第二单元 分数混合运算 基础测试题.doc VIP
- 2025至2030中国食用油行业运营态势与投资前景调查研究报告.docx VIP
- 10.3 合同的变更、转让、解除和终止(政策与法律法规 第7版).pptx VIP
- 儿童肺炎支原体肺炎诊疗指南2025年版解读PPT课件.pptx VIP
- 深圳初一数学下学期期中模拟测试题(带答案).pdf VIP
- 2023年春国开(甘肃)《个人理财》形考任务1-4题库.docx
文档评论(0)