网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  关于 mvc 模式中的通知机制     
  文章作者:未知  文章来源:水木森林  
  查看:93次  录入:管理员--2007-11-17  
 

一、简介

    一般应用中用户界面的变化相对较为频繁 , 有时需要支持多种表现模式(如 web 客户端和 gui 客户端),但是数据和业务逻辑相对保持稳定。

    mvc(model-view-controller) 模式是一种常用的设计模式 ,mvc 将模型 , 显示和控制进行了分离,可以使得应用更加方便实现对多种表现模式的支持及降低表现形式修改对整体系统的影响。由于本文重点讨论的是 mvc 中的通知机制,至于 mvc 的其它内容可以参考其它相关文档。 


关于 mvc 模式中的通知机制(图一)

图表一mvc模式

二、mvc的通知机制

    上图是在 sun 的 j2ee blueprints 中关于 mvc 模式的描述 , 在实现 mvc 模式时首先应该注意的是模型与视图之间的关系。在这些关系中尤其值得大家注意的是模型通知视图,如果不能正确的设计这个通知机制(模型与视图之间关联实现通知)便会完全违背 mvc 的设计初衷。 mvc 模式的其中一个目的在于使模式独立与视图,然而不正确的理解和设计通知机制会导致模型和试图的依赖性。

    2.1     采用 observer 模式实现通知机制既要实现模式到视图的通知机制,同时有要确保实现模型与视图的分离。通常我们可以通过observer模式来实现这样的通知机制。

关于 mvc 模式中的通知机制(图二)

    图表2 observer模式

    视图实现 observer 接口,并向模型注册,模型通过调用所维护的观察者的实例调用 update 方法来通知视图进行刷新。可见, observer 接口有效的实现了模型和视图间的耦合性的分离。

    2.2     模型通知视图还是控制器通知视图

关于 mvc 模式中的通知机制(图三)

    图表 3 基于 mvc 的 j2ee 应用

    在将 mvc 模式应用于的总体结构时,常常会有是模型通知视图还是控制器通知视图的问题,其实我认为这个问题完全取决于对系统各个部分的划分和理解,如果我们把模型层更多划分为数据实体 ( 如: entity bean) 则可能会发现,其实我们的通知机制是不能由模型部分来完成的,而是由我们的控制器来完成的。这种划分好象有些违背了 mvc 模式,但实事上特别是一些想要同时支持 b/s 和 c/s 的 j2ee 应用,控制器和模式通知机制常常有较大的耦合性( c/s 结构中,客户完全通过会话 bean 来完成业务),可能有时在一起实现更好。

    总之,更好的内聚性和更松散的耦合性才是架构设计的重点,应该做出适合自身应用的 mvc 架构。

三、结束语

    mvc 模式的关键在于分离易变和不易变部分间的耦合性,所以在应用 mvc 模式时一定要注意解耦才是关键,同时一定要更据具体的使用环境进行调整,不要生搬硬套,如 microsoft 的 mfc 采用的 document-view 就是 mvc 的变体,它把控制器合并到视图中,这是因为考虑了视图与控制器紧耦合的影响。

【参考文献】

1.  sun microsystem j2ee blueprints

2.  gof,design patterns, 机械工业出版社, 2002

 

作者:

蔡超,贵州大学,计算机软件与理论,硕士

mcsd scjp ,高级程序员认证

北京天融信网络安全技术有限公司,软件工程师

从事软件开发 4 年,

 
 
上一篇: java程序性能调优的基本知识和jdk调优    下一篇: 建立一个结构合理的概念框架
  相关文档
ejb系列教程之三 11-17
java学习之容易忽视的小问题 11-17
java和以网络为核心的未来 11-17
简单的java循环控制实现行列式算法 11-17
应用rational 工具简化基于j2ee的项目(一) 11-17
j2me工具:使用j2meunit进行游戏测试 11-17
java基础:将数据库操作封装到javabean 12-11
jini的阿拉丁神灯能亮多久? 11-17
java高级:深入浅析java 类型提升的约定 12-26
java中用动态代理类实现记忆功能(一) 11-17
js实现无刷新联动菜单 11-16
ajax:拥抱json,让xml走开 11-17
java核心代码例程之:threaddemo.java 11-17
进一步研究字面量 11-17
java设计模式之command(菜单命令) 11-17
实现方案的隐藏 11-17
使用factory method模式 11-17
java学习经验谈 11-16
用java.net包建立双向通讯 11-17
关于在canvas类里调用textbox 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息