快捷搜索:  test  as

关于 MVC 模式中的通知机制

一、简介

一样平常利用顶用户界面的变更相对较为频繁 , 无意偶尔必要支持多种体现模式(如 WEB 客户端和 GUI 客户端),然则数据和营业逻辑相对维持稳定。

MVC(Model-View-Controller) 模式是一种常用的设计模式 ,MVC 将模型 , 显示和节制进行了分离,可以使得利用加倍方便实现对多种体现模式的支持及低落体现形式改动对整系一切的影响。因为本文重点评论争论的是 MVC 中的看护机制,至于 MVC 的其它内容可以参考其它相关文档。

图表一MVC模式

二、MVC的看护机制

上图是在 SUN 的 J2EE BluePrints 中关于 MVC 模式的描述 , 在实现 MVC 模式时首先应该留意的是模型与视图之间的关系。在这些关系中尤其值得大年夜家留意的是模型看护视图,假如不能精确的设计这个看护机制(模型与视图之间关联实现看护)便会完全违抗 MVC 的设计初衷。 MVC 模式的此中一个目的在于使模式自力与视图,然而不精确的理解和设计看护机制会导致模型和试图的依附性。

2.1采纳 Observer 模式实现看护机制既要实现模式到视图的看护机制,同时有要确保实现模型与视图的分离。平日我们可以经由过程Observer模式来实现这样的看护机制。

图表2 Observer模式

视图实现 Observer 接口,并向模型注册,模型经由过程调用所掩护的察看者的实例调用 Update 措施来看护视图进行刷新。可见, Observer 接口有效的实现了模型和视图间的耦合性的分离。

2.2模型看护视图照样节制器看护视图

图表 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 年,

您可能还会对下面的文章感兴趣: