1 / 24
文档名称:

Java SE应用程序设计与MVC.doc

格式:doc   页数:24
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Java SE应用程序设计与MVC.doc

上传人:1006108867 2014/1/8 文件大小:0 KB

下载得到文件列表

Java SE应用程序设计与MVC.doc

文档介绍

文档介绍: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
{
私人字符串文本;
私人字体字体;

最近更新

2024年烟台工程职业技术学院马克思主义基本原.. 12页

2024年牡丹江大学马克思主义基本原理概论期末.. 13页

2024年玉环县招教考试备考题库附答案解析(必.. 31页

2024年班玛县招教考试备考题库含答案解析(夺.. 31页

2024年甘泉县幼儿园教师招教考试备考题库含答.. 31页

2024年甘肃钢铁职业技术学院马克思主义基本原.. 12页

2024年皖西卫生职业学院马克思主义基本原理概.. 13页

2024年盐津县幼儿园教师招教考试备考题库带答.. 30页

2024年石台县幼儿园教师招教考试备考题库附答.. 30页

2024年石家庄铁道大学四方学院马克思主义基本.. 12页

2024年砀山县幼儿园教师招教考试备考题库带答.. 30页

2024年福州大学马克思主义基本原理概论期末考.. 13页

2024年福建教育学院马克思主义基本原理概论期.. 12页

2024年秦皇岛职业技术学院马克思主义基本原理.. 12页

2024年筠连县幼儿园教师招教考试备考题库含答.. 31页

2024年繁昌县幼儿园教师招教考试备考题库及答.. 30页

2024年绛县招教考试备考题库带答案解析(夺冠.. 31页

2024年绵阳职业技术学院马克思主义基本原理概.. 13页

2024年肇庆学院马克思主义基本原理概论期末考.. 12页

2024年苏州健雄职业技术学院马克思主义基本原.. 12页

2024年若尔盖县招教考试备考题库含答案解析(.. 31页

2024年荔波县幼儿园教师招教考试备考题库带答.. 31页

2024年获嘉县招教考试备考题库附答案解析(必.. 30页

2024年蒙山县招教考试备考题库带答案解析 31页

2024年蕉岭县幼儿园教师招教考试备考题库带答.. 31页

2024年衡东县招教考试备考题库附答案解析(夺.. 30页

2024年襄城县招教考试备考题库附答案解析(必.. 30页

2024年西华大学马克思主义基本原理概论期末考.. 13页

2024年西安交通工程学院马克思主义基本原理概.. 12页

2024年西安理工大学马克思主义基本原理概论期.. 12页