浅谈MVC架构设计模式

                            浅谈MVC架构设计模式

[摘 要 ]本文先 简单介绍 了 MVC设 计模 式的起源 ,而后讨论 了 MVC的三个组成部分(模型 、视 图、控制器 )及其工作 流程 ,并对 MVC架构的优点及不足之处进行了分析 ,最后介绍 了Struts框 架中的MVC实现机制。

[关键词 ]MVC  Struts

MVC模式结构

MVC设计 模式是“Model—View—Controller”的缩 写 ,中文 翻译 为“模 一视图 一控制器”。MVC设计模式将一个完整的应用分成三个组件 。

下面分别介绍各个组件的定义。

Model(模型 ):该组件代 表应用程序数据和数据的处理以及其他的逻辑 。是对软件所处理问题逻辑 的一种抽象 ,封装 了问题 的核心数据 、逻辑和功能实现,独立于具体 的界面显示以及 I/O操作。在一个 网网应用程序中 ,就是应用服务器程序和数据库。

View(视 图):该组件代表用户看到并 与之交互的界面。视 图向用户展示用户感兴趣 的业务数据 ,并能接 收用户 的输入数据 ,视图可 以向模型查询业务数据 ,视图还能接收模型发 出的业务数据更新事件 ,从而对用户界面进行 同步更新。一般包含用户控制操作和信息显示

Controller(控制器 ):该组件代表着处理用户输入 ,并调用模 型和视图来完成用户请求 ,从而保证 了界面与模 型状态的统一。根据应用程序设计的不同,Controller可 以位于客户端也可 以位于服务器端 ,或者两者结合起来。 在实际应用中 ,模 型、视 图、控制器三者既相互独立 又相互关联。

MVC工作流程

MVC的工作流程大致可以分成 以下 四步 :

(1)用 户通过视图向基 于 MVC的应用程序发 出一个请求 。

(2)这个请求会被控制器截获 。控制器充当交通警察的角色 ,会检查用户请求 ,然后调用必要 的业务逻辑 以执行所请求的动作

(3)用 户请求的业务逻辑被封装在模 型中。该模 型会执行相应的业务逻辑 ,并返 回数据。模 型执行完相应的请求后 ,把执行权返回给控制器。

(4)控制器调用 相应 的视图来显示模型返 回的数据 ,将 正确 的状态信息显示给用户。

三、MVC优缺点

MVC设计模式在构建 Web应用中具有显 著的优 势 ,可适用 于多用户的 、可扩展的、高交互性 的系统 ,如电子商务平台和 ERP系统等 。它可以很好地表 达用 户与系统 的交互模式 以及整个 系统的程 序架构模式。有如下优点

(1)有利于分工部署 ,提高工作效率。使用 MVC设计模式开发应用程序 ,开发人员的分工更加明确 ,负责不同逻辑设计的开发人员就可以

分散关注 ,齐头并进。开发进度就可以迅速提高 。以javaweb开发 为例Java开发人员集中精力于业务逻辑,界面程序员 (HTML和 JSP开发人员 )集中精力于页面表现形式上 。

(2)可以降低层与层之间的依赖 。在 MVC设计模式 中,视图层和业务层相分离,这样就允许更改视图层代码 而不用 重新编译模型和控制器代码同样为模型、控制器和视图有效分离,降低了三者之间的耦 合紧密程度,从而 ,一个应用的业务流程或 者业务规则的改变只需要改动 MVC的模型层即可。

(3)提高可维护性:由于视图层和业务逻辑层有效分离,各部分的 责任划分得很清楚 ,维护人员很容 易了解程序 的结构 ,便于维护工作的进行。

(4)提高了应用程序 的重用性 。对于 同一个Web应用,客户可能会使用多种方式进行访问但是无论通过什么访 问方式应用程序的业务逻辑以及业务流程都是一样 的 ,需要改变 的只是表示层 的具体实现方式。从 而提高代码的利用率 。

(5)有利于软件工程化管理 。由于不 同的层各司其职 ,每一层 不同

的应用具有某些相同的特征 ,有利于通过工程化 、工具化管理程序代码 。虽然 MVC设计模式在面 向对象程序设计中被广泛应用 ,但是该设计模式也存在一些不足之处。MVC的不足 主要体现在以下 2个方面 :

(1)由于开发者利用 MVC模式将 一个应用程序分成了三个组件通 过多产生 一些类 ,来提高程序的可读性与健壮性。所以使用 MVC同时也意味着开发人员将要管理更多的文件。即造成类 的数量及文件数量的增加。

(2)并不适合小型应用程序 的开发设 计。MVC模式的精心设计需

要花费用户一些时间去思考其相对复杂的内部 原理 ,而如何将 MVC运用到用户的应用程序 中还需要花费相当可观的时间。对于一个小型应用程序来说严格遵循 MVC设 计模式 开发 ,使模型视图与控制 器分 ,反而会增加系统结构和实现的复杂性及一些不必要的工作 ,影响开发效率。

四、举例说明 MVC的具体应用——Struts框架的 MVC实现机制

Struts开发框架是 由 Apache软件基金会开发和管理的 ,它是一个基于 SunJ2EE平台的 MVC框架 。在此 ,不详述 Struts框架的实现细节 , Struts对 Model、View和 Controller都提供 了 对应的实现组件。 模型部分 :Struts为 Model部分提供 了 Action对象 和 ActionForm对 象 ,一般是 采用JavaBean或 EJB组 件设 计和实 现系 统的业 务逻 辑 。 ActionForm封装 了来 自于用户 的表单 信息 。Action从 控制器获取 ActionForm,执行业务逻辑。Action主要有两个作用 :调用相应业务逻辑请 求和传递数据 。控制器部分 :控制器是 Struts框架中的核心组件 ,由 ActionServlet 类实现 。ActionServlet用来接受客户端 的请求 。根据配置文 件 struts—eonfig.xml的配置信息 ,把请求转发给适 当的 Action对象 。AetionServlet包括 一组 基于 配置 ActionMapping对 象 。我们 只需要 配置 Action—

Mapping对象 即可完成 URL地址 的映射 及匹配 用户界 面表单 和 Ac—tionForm类的对应关系 。 图部分 Struts框架中视 图有多种 表现形式 ,除了 HTML,JSP页面这些常规表现形式 以外 Struts还 支持 FreeMarker等其他视图技术 。视图中不包含业 务逻辑 和模型信息 ,只有标签 Struts提供了 自定义的标签库 (TagLib)。包括 BeanTags,HTML,TTags,TemplateTags,TilesTags,NestedTags。Struts 框架通过这些 自定 义标 签建立 了 View和 Model之间的联系,提高了开 发效率。一个 Struts应用程序 的简要执行流程如下 :

(1)客户端浏览器发 出请求 。

(2)ActionServlet接收传人的客户端请求 ,ActionServlet类会查找在服务器启 动时就加载到 内存 的配置文件 struts—config.xml,根据文件中 的内容来进行路径 与功能的映射查询。

(3)ActionServlet将提交 的 request对象映射到 ActionForm中。

(4)将 ActionForm传递给 Action来进行处理。Action类执行相应的

业务逻辑功能,比如查询与修改数据库 中的数据。

(5)当模型状态改变后 ,ActionServlet选择对应的视图组件来反馈改变后的结果。最终返 回给客户端

总结:

由于 MVC模式并不是 十分 简单 ,内部原理 比较复杂,当使用MVC模式时需要精心地设计。MVC模 式分离了程序的表现 、控制和数 ,具有设计清晰 、易于扩展 、运用可分 布的特点,它可以很好地 表达用户与系统的交互模式以及 整个系统 的程序架构模式。由于MVC模式有众多的优点 ,所 MVC模式的适用 范围很广 。尽管 MVC有许多优 点,但它并不是对所有的应用都适用 。对 于小 型应用 使用 MVC会带来额外的工作量 ,并会增加 应用 的复杂性 ,所以 MVC模式并 不适合小型应用程序 。但对于开发业务逻辑复杂的、存在大量用户界面的大型应用系统 ,尽管在最初构建 MVC框架时会花费一定的时间和精力 ,但 MVC模式将会使系统在健壮性 、代码可重用性等方面登上一个新的台阶 ,它会大大提高后期软件开发的效率。因此 MVC模式在 当前大 型软件 开发中被广泛应用。

参考文献

[1]张孝祥.深入体验 IavaWeb开发 内幕——核 心基础.电子工业出

版社 2006.10

[2]粱建武 ,邹锋.JSP程序设计实用教程冲 国水利水电 出版社,2007.

5

[3]龚赤兵:W eb开发新体验:ASP.NET3.5MVC 架构与 实战.电子

工业出版社2009.9

[4]范立锋 ,乔世权 ,程 文彬.JSP程序设计.人 民邮电 出版社 。2009.5

[5]闫术卓,杨强.Struts2技术详解一 基于 WebWork核 心的 MVC 开发与 实践.电子工业出版社 ,2008.6

 

posted on 2020-05-13 17:13  白杰一号  阅读(743)  评论(0编辑  收藏  举报