background image

MVC 设计模式(Model 模型-View 视图-Controller

控制器)一种 软件架构模式 。与开发

语言无关,在 PHP JAVA .NET,Python,Ruby

的开发中都会用到。不要被 软件架构模式 这

样的词吓到,所谓 软件架构 ,就是如何把很多代码组织在一起,而 模式 就是经验的
意思。如果你去做促销员,培训老师会教你如何如何与顾客沟通,这些以前成功销售员总

 

结的经验,起个名字就叫模式。

近年来,MVC 设计模式在网页开发中应用广泛,事实上 MVC 设计模式是一种思想,不
只应用在网页开发中,这里我们主要以网页 WEB 开发为主。主流的 WEB 开发语言都有很
多 优 秀 的 MVC 框 架 , 如 PHP 系 的 Cakephp,Zend FrameWork, JAVA 系 的 Struts,Spring,  
Ruby 系的 Ruby on Rails,Python 系的 Django,本文与 PHP 为例,通过比喻说明 MVC 的

 

思想。

第一个比喻: 
在一个小型软件公司里,程序员就是 Model 模型,项目经理就是 Controller 控制器,销售
员就是 View 视图. 
我们来看程序员,项目经理,销售员的关系。项目经理通常不作具体的事,负责工作分配。
 
项目经理的工作就是将不同的任务合适的分配给不同的程序员,而程序员通常是接到任
务后,埋头工作,完成后交给项目经理。而销售员的工作则是将产品以不同的形势包装后

 

出售。

程序员看来是同一个东西的数据库管理程序,销售员能稍做修改后,包装成人力资源系
统,客户管理系统等等。简单的说:程序员做具体的事,项目经理管工作调度,销售员包
装展示产品。这就是 MVC  

MVC 翻译为模型-视图-控制器,是字面翻译。我觉得 MVC 意译为:处理-展示-调度容易

 

理解些。

回到开篇的问题,"有人问我,什么是 MVC 设计模式, 我通常说你就是 M, 即 Model 模型" 
为什么这么说呢?应为提问的人通常是程序员,程序员就是管做事的,不同的的项目经
理可让同一个程序员来做事,就像不同的 Controller 控制器可以调用同一个 Model

 

模型。

第二个比喻:以一个餐馆做比喻。在只有一老板的小店,通常是这样的:你说老板,来碗
蛋炒饭,老板收钱后,去厨房炒饭,饭好后给你端上来。一个人搞定,没有问题。这样的

 

小店还不少。
这就像一些老资格的 PHP 程序员,喜欢用 VI

 

裸写,在一个文件里搞定一切。

再来看一个大一些的餐馆,因为顾客很多,就有了分工,厨师只管炒饭,有专门的调度
人员将不同的订单分配给不同的厨师,有服务员负责上菜。这里厨师就是 Model 模型,调
度人员就是 Controller 控制器,上菜的服务员就像 View 视图,同样的蛋炒饭有的顾客要
带走,就要用餐盒打包,有的顾客在餐馆茶馆吃,就要给放到碗里给顾客。至于蛋炒饭要
不要打包,厨师不管,就像 Model 层负责返回数据,至于以 PDF 或是 HTML 展示,这是
VIEW

 

层的工作。

在 MVC 设计模式中,提倡分工和专注。也就是说,各个角色做好本职工作,而不提倡越