mvc 概念

MVC 的创建者是Trygve M. H. Reenskau ,他是挪威的计算机专家,同时也是奥斯陆大
学的名誉教授。MVC 是他在1979 年访问施乐帕克研究中心(Xerox Palo Alto Research Center,
XeroxPARC) 期间提出一种主要针对GUI 应用的软件架构模式。MVC 最初用于SmallTalk ,
Trygve 最初对MVC 的描述记录在Applications Programming in Smallta/k-80(TM) :How ω use
Mode/- 阿ew-Controller 
MVC 体现了关注点分离这一基本的设计方针,它将构成一个人机交互应用涉及的功能
分为Model 、Controller 和View 三部分,它们各自具有相应的职责。
• Model 是对应用状态和业务功能的封装,我们可以将它理解为同时包含数据和行为的领
域模型(Domain Model) 0 Model 接受Controller 的请求并完成相应的业务处理,在状态
改变的时候向View 发出相应的通知。
• View 实现可视化界面的呈现并捕捉最终用户的交互操作(比如鼠标和键盘操作)。
• View 捕获到用户交互操作后会直接转发给Controller,后者完成相应的UI 逻辑。如果
需要涉及业务功能的调用, Controller 会直接调用Model 。在完成UI 处理之后, Controller
会根据需要控制原View 或者创建新的View 对用户交互操作予以响应。
图1-1 揭示了MVC 模式下Model 、View 和Controller 之间的交互。对于传统的MVC
模式,很多人认为Controller 仅仅是View 和Model 之间的中介,实则不然, View 和Model
存在直接的联系。View 可以直接调用Model 查询其状态信息。当Model 状态发生改变的时
候,它也可以直接通知View。比如在一个提供股票实时价位的应用中,维护股价信息的Model
在股价变化的情况下可以直接通知相关的View 改变其显示信息。
State Notification S1ate Change
State Querý
View
图1-1 Model-View-Controller 之间的交互
从消息交换模式的角度来讲, Model 针对View 的状态通知和View 针对Controller 的用
户交互通知都是单向的,我们推荐采用事件机制来实现这两种类型的通知。从设计模式的角
度来讲就是采用观察者(Observer)模式通过注册/订阅的方式来实现它们,即View 作为Model
的观察者通过注册相应的事件来检测状态的改变,而Controller 作为View 的观察者通过注

posted @ 2014-11-22 21:37  su_li  阅读(96)  评论(0)    收藏  举报