<p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);"><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">MVC</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。</span></p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);">
<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">MVC 由 Trygve Reenskaug 提出,最早被应用在 SmallTalk-80 环境中。</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">模型—视图—控制器模式</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:</span></p><ul style="list-style-position: outside; list-style-image: initial; margin: 0px 0px 0px 14px; padding: 0px; font-size: 14px; text-align: justify; background-color: rgb(255, 255, 255); line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68);"> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">控制器 - 程序员编写程序应有的功能(实现算法等等)</li> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">视图 - 界面设计人员进行图形界面设计</li> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">模型 - 数据库专家进行数据管理和数据库设计</li></ul><p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);">
ModelViewControllerDiagramZh.png 

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">模型(Model)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">“数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权利,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。</span>

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">视图(View)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);"> 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。</span>

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">控制器(Controller)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);"> 控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。</span></p>