网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  j2ee基础:mvc模式和struts模式的理解     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:72次  录入:管理员--2007-11-16  
 

mvc方式通常在smalltalk中用于建立用户接口。通过对mvc中蕴藏的设计模式可以帮你理解我们所说的“模式”的含义。

mvc包括三类对象,model是应用对象、view为其屏幕表示、controller定义了对用户输入的处理(反应)方式。在应用mvc方式以前,通常将这三个对象的功能合到了一起,应用mvc分离了它们,为设计提供了灵活性和可重用性。

mvc通过在view和model之间建立subscribe/notify协议,分离了view和model对象。view对象必须保证它的表示反应了model对象的状态,当model对象的数据改变时,model对象通知(notify)view对象,作为对这一行为的反应,每个view对象得到了一个做出更新的机会。这种方式使得可以将多个view对象为一个model对象提供不同的表示。你也可以为model对象建立新的view对象,而不用重新编写model。下图演示了一个model和三个view:

从表面看,这一例子反应了一个将view和model分离的设计。然而,这种设计适合一类更通用的问题:减少对象之间的藕和性,这样,当一个对象改变时,将不会影响到另外的对象,甚至不需要知道另外的对象的实现细节。这种更通用的模式将在observer模式中来描述。

mvc方式的另一个特点是,view对象是可嵌套定义的。例如,button的控制板可由一个包含嵌套button view对象的复杂view对象来实现;对象观察器的用户接口可由能重用于调试器的嵌套view对象组成。mvc方式采用compositeview类(view的子类)来支持嵌套view,其行为与view对象的行为一致,可用于view对象能使用的任何场合。

于是,我们又可以把这种对待composite view就像处理其一个组件的方式看成一种设计(方式)。同样的,这种设计可抽象出另一类更通用的问题(的解决方式):我们在某种情形下将对象分成组,并且处理一个组就像对待对象个体。这种方式我们用composite设计模式来描述。它允许你建立类的层次,在这一层次下,有些子类定义原始对象(如button),而其它的类可以定义合成对象(compositeview),合成对象可将原始对象装配成更复杂的对象。

同样,mvc也可改变视图类(view)对用户反应的方式,而不用改变其可视化表示。你可能想改变其对键盘响应的方式,如,使用弹出菜单代替命令键。mvc将这种反应机制封装为控制对象(controller)。控制器有一个类层次,易于实现从一个已存在的控制器建立出一个变种—一种新的控制器。

视图(view)对象通过某一控制器对象的实例(instance)来实现特定的响应策略。为了实现不同的策略,可以简单的使用不同的控制器实例来替换当前的实例。甚至可以在运行时来改变视图的控制器,以改变视图对象对用户输入的响应(策略)。例如,一个view对象可置为disabled,即对用户的输入不做任何响应。要达到这一目的,仅仅只需让控制器忽略所有input事件。

这种视图—控制器关系即是strategy设计模式的一个典型例子。所谓strategy即这样一个对象,它表示了一种算法。这在你想要替换算法(无论是静态替换还是动态替换)时特别有用,而这样的算法可能有许多的变量、或者拥有复杂的数据结构。

mvc中也使用了别的设计模式,例如,使用factory method模式来描述视图的默认控制器类;采用decorator模式来为视图增加滚动条等。但在mvc中的主要模式是前述的observer、composite、和strategy设计模式。

 
 
上一篇: 在web2.0下的十大ajax安全漏洞以及成因    下一篇: spring框架下实现基于组的用户权限管理
  相关文档
隐藏的数据炸弹可能是导致不正常崩溃的罪魁祸首 11-17
jdbc中常用的类库和程序中具体实现方法 11-16
转-类的深入研究 11-16
java中常见的异常 11-16
在jboss下开发、部署ejb 11-17
用javabean实现文件上载(三)属性 11-16
java:it认证中最有魅力的开发工具之一 11-16
使用技巧:java程序用缓冲io来提高性能 11-16
jbulder6与weblogic6.1整合 11-17
linux环境下安装运行jsp/servlet 11-17
java动态程序设计——反射介绍 11-17
servlets简介 11-17
java入门及faq__1(5) 11-17
java how to program(third edition)——我的java手记(二) 11-17
enterprise library-data block oracle 11-17
jsp/servlet/jsf--谈jsp与xml的交互 01-07
java培训热潮涌动 11-17
ejb轻松进阶之一 11-16
think in java 3rd 中文版7 11-17
xml和j2ee的组合技术 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息