`
yzd
  • 浏览: 1844288 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MVC模式学习笔记【1】

 
阅读更多
<p><strong>MVC模式</strong>
(Model-View-Controller)是<a href="http://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B">软件工程</a>
中的一种<a href="http://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84">软件架构</a>
模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。</p>
<p>MVC模式最早由<a class="new" title="Trygve Reenskaug" href="http://zh.wikipedia.org/w/index.php?title=Trygve_Reenskaug&amp;action=edit&amp;redlink=1">Trygve Reenskaug</a>
在1974年<sup id="cite_ref-0" class="reference"><a href="http://zh.wikipedia.org/wiki/MVC#cite_note-0">[1]</a>
</sup>
提出,是<a title="帕罗奥多研究中心" href="http://zh.wikipedia.org/wiki/%E5%B8%95%E7%BE%85%E5%A5%A7%E5%A4%9A%E7%A0%94%E7%A9%B6%E4%B8%AD%E5%BF%83">施乐帕罗奥多研究中心</a>
(Xerox PARC)在20世纪80年代为程序语言<a href="http://zh.wikipedia.org/wiki/Smalltalk">Smalltalk</a>
发明的一种软件设计模式。<strong>MVC模式</strong>
的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:</p>
<ul>
<li>(控制器Controller)- 负责转发请求,对请求进行处理。</li>
<li>(视图View) - 界面设计人员进行图形界面设计。</li>
<li>(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。</li>
</ul>
<p></p>
<h2>
<span id=".E5.B1.82.E6.AC.A1" class="mw-headline">层次</span>
</h2>
<p><strong>模型(Model)</strong>

“数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模
型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种
机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。(比较:<a href="http://zh.wikipedia.org/wiki/%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F">观察者模式</a>
(<a class="mw-redirect" title="软件设计模式" href="http://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F">软件设计模式</a>
))</p>
<p><strong>视图(View)</strong>
视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。</p>
<p><strong>控制器(Controller)</strong>
控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。</p>
<h2>
<span id=".E4.BC.98.E7.82.B9" class="mw-headline">优点</span>
</h2>
<p>在最初的<a href="http://zh.wikipedia.org/wiki/JSP">JSP</a>
网页中,像<a href="http://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93">数据库</a>
查询语句这样的数据层代码和像<a href="http://zh.wikipedia.org/wiki/HTML">HTML</a>
这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心地计划和不断的尝试。MVC从根本上强制性地将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它带给我们的好处是毋庸置疑的。</p>
<p>首先,多个视图能共享一个模型。如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能够通过浏览器来收发<a href="http://zh.wikipedia.org/wiki/%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6">电子邮件</a>
,还希望通过手机来访问<a class="mw-redirect" title="电子邮箱" href="http://zh.wikipedia.org/wiki/%E7%94%B5%E5%AD%90%E9%82%AE%E7%AE%B1">电子邮箱</a>
,这就要求Web网站同时能提供<a class="mw-redirect" title="Internet" href="http://zh.wikipedia.org/wiki/Internet">Internet</a>
界面和<a class="mw-redirect" title="WAP" href="http://zh.wikipedia.org/wiki/WAP">WAP</a>
界面。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。</p>
<p>其次,控制器是自包含(self-contained)指高独立内聚的对象,与模型和视图保持相对独立,所以可以方便的改变应用程序的数据层和业务规则。例如,把数据库从<a href="http://zh.wikipedia.org/wiki/MySQL">MySQL</a>
移植到<a class="mw-redirect" title="Oracle" href="http://zh.wikipedia.org/wiki/Oracle">Oracle</a>
,或者把<a class="mw-redirect" title="RDBMS" href="http://zh.wikipedia.org/wiki/RDBMS">RDBMS</a>
数据源改变成<a class="mw-redirect" title="LDAP" href="http://zh.wikipedia.org/wiki/LDAP">LDAP</a>
数据源,只需改变控制器即可。一旦正确地实现了控制器,不管数据来自数据库还是<a class="mw-redirect" title="LDAP" href="http://zh.wikipedia.org/wiki/LDAP">LDAP</a>
服务器,视图都会正确地显示它们。由于MVC模式的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的少互扰性的构件。</p>
<p>此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,也可以构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型机型处理,然后选择适当的的视图将处理结果显示给用户。</p>
<h2>
<span id=".E8.A9.95.E5.83.B9.E5.8F.8A.E9.80.82.E7.94.A8.E8.8C.83.E5.9B.B4" class="mw-headline">评价及适用范围</span>
</h2>
<p>MVC模式的缺点是由于它没有明确的定义,所以完全理解MVC模式并不是很容易。使用MVC模式需要精心的计划,由于它的内部原理比较复杂,所以需
要花费一些时间去思考。开发一个MVC模式架构的工程,将不得不花费相当可观的时间去考虑如何将MVC模式运用到应用程序中,同时由于模型和视图要严格的
分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。另外由于MVC模式将一个应用程序分成了三个部件,所以这意味着
同一个工程将包含比以前更多的文件。</p>
<p>过去MVC模式并不适合小型甚至中等规模的应用程序,这样会带来额外的工作量,增加应用的复杂性。但现在多数软件设计框架,能直接快速提供MVC骨
架,供中小型应用程序开发,此问题不再存在。对于开发存在大量用户界面,并且逻辑复杂的大型应用程序,MVC将会使软件在健壮性、代码重用和结构方面上一
个新的台阶。尽管在最初构建MVC模式框架时会花费一定的工作量,但从长远的角度来看,它会大大提高后期软件开发的效率。</p>
<p></p>
<p><img src="http://hi.csdn.net/attachment/201104/5/0_1301973685oIpA.gif" alt=""></p>
分享到:
评论

相关推荐

    j2EE-MVC设计模式(内附ppt讲解,学习笔记和应用实例)

    配合PPT讲解和学习笔记,你可以更深入地理解MVC模式。PPT通常会通过图表和案例演示MVC的工作原理和实际应用,而学习笔记则可能包含实践过程中遇到的问题及解决方案,是巩固理论知识和提升实战技能的好资源。 **七、...

    学习笔记:javaWeb考试系统(基于MVC模式)

    在这个系统中,MVC模式将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),以实现业务逻辑与用户界面的分离。 1. **模型(Model)**: 模型层是整个系统的核心,负责处理业务逻辑和...

    MVC设计模式讲解笔记

    1. **解耦合**:MVC模式通过分离关注点,使得模型、视图和控制器之间松耦合,有利于代码的重用和独立开发。 2. **模块化**:每个组件都有明确的职责,方便团队协作,一人可以专注于一个部分的开发。 3. **易于维护**...

    学习ASP.NET MVC框架揭秘笔记第一章

    本笔记涵盖了 ASP.NET MVC 框架的基本概念和设计模式,旨在帮助读者理解 ASP.NET MVC 框架的核心思想和设计原则。 1. 自治视图(Autonomuous View) 在传统的应用开发中,我们通常将 UI 界面的呈现、用户交互操作...

    Spring MVC 学习笔记

    **Spring MVC 学习笔记** Spring MVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。它提供了一种模型-视图-控制器(MVC)架构,简化了开发过程,使得开发者可以专注于业务逻辑而不必过于关注底层的细节。...

    spring mvc学习笔记

    ### Spring MVC 学习笔记 #### 一、Spring MVC 核心组件与工作流程 **Spring MVC** 是 **Spring Framework** 的一个重要模块,主要用于构建基于 Web 的应用程序。它提供了简化 Web 开发的一系列功能,包括但不限于...

    [转] 老板让俺总结的puremvc学习笔记

    在阅读《PureMVC学习笔记.docx》时,你可能会深入了解每个组件的工作原理,以及如何在实践中应用它们。这份文档可能包含了示例代码、最佳实践和常见问题解答,帮助你更好地理解和掌握PureMVC框架。通过学习和实践,...

    mvc 学习笔记,重点难点记录

    根据提供的内容,我们可以通过MVC模式重新组织登录模块的设计: 1. **需求**:完成用户登录功能,其中用户名和密码保存在数据库中。 2. **数据库设计**: - 使用Oracle数据库创建一个表`Person`,包含字段`id`、`...

    MVC框架struts学习笔记

    在Struts框架中,MVC模式帮助开发者将业务逻辑、数据处理和用户界面解耦,提高了代码的可复用性和可维护性。 **领域模型(Domain Model)**: 领域模型代表应用程序的核心业务对象,它不关注具体的数据库存储方式。...

    Spring3 MVC 学习笔记 入门

    ### Spring3 MVC 学习笔记入门知识点解析 #### 一、Spring MVC 概念与架构 **Spring MVC** 是 Spring Framework 的一个重要模块,主要用于构建基于 Web 的应用。它实现了 Model-View-Controller(MVC)设计模式,...

    ASP.NET MVC学习笔记-Controller与View传值.

    ### ASP.NET MVC学习笔记-Controller与View传值 #### 一、引言 在ASP.NET MVC框架中,数据从Controller传递到View的方式是至关重要的。相比于传统的ASP.NET Web Forms模式,MVC架构更加注重分离关注点,即Model、...

    spring_mvc学习笔记

    在Spring MVC的学习过程中,了解和掌握其核心概念与机制至关重要。Spring MVC是Spring框架的一个模块,主要用于构建Web应用程序。在Spring 3.0.x版本中,Spring MVC进行了大量的改进,引入了许多新特性和优化,使其...

    MVC.rar_monty_mvc_mvc模式

    **标题:“MVC.rar_monty_mvc_mvc模式”** ...总的来说,这个实验项目提供了一个学习和理解MVC模式如何应用于实际问题的好机会,同时通过Monty Hall游戏模拟,开发者可以深入理解概率和决策理论在编程中的应用。

    Spring MVC 学习笔记 十二 PDF/Excel格式输出

    本学习笔记主要围绕Spring MVC的使用、配置和核心组件进行深入探讨,旨在帮助开发者更好地理解和掌握这一框架。 在Spring MVC中,Model代表业务逻辑和数据,View负责数据的展示,而Controller处理用户请求,协调...

    mvc学习过程全笔记

    ### MVC学习过程全笔记知识点详解 #### 一、MVC架构概述 MVC(Model-View-Controller)是一种软件架构模式,广泛应用于Web应用程序开发之中。它将应用程序分为三个核心部分: 1. **模型(Model)**:负责管理应用...

    传智 mybatis mvc 教案及笔记 燕青

    【传智mybatis MVC教案及笔记 燕青】涵盖了Java Web开发中的核心框架——MyBatis和MVC模式的应用,这些内容对于深入理解和实践Java后端开发至关重要。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及...

    Pro.ASP.NET MVC4英文版与个人学习笔记

    1. **MVC模式**:MVC模式将应用程序分为三个主要部分——模型(Model)、视图(View)和控制器(Controller)。模型处理数据逻辑,视图负责呈现用户界面,而控制器接收用户输入并调用模型和视图进行响应。 2. **...

    Flex MVC框架 Cairngorm 学习笔记

    在深入探讨Cairngorm的各个组成部分之前,我们首先理解一下MVC模式的基本理念。 MVC模式是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据...

Global site tag (gtag.js) - Google Analytics