第三章 正确认识MVC

Laravel5.1教程

 

第三章正确认识MVC

一、名词解释:

MVC是一种软件设计模式。何为设计模式?设计模式通俗地讲,就是一大堆码农在生产实际中形成的通用的,固有的,久经考验的成熟思维模式、编程算法。这样的思维模式能简化软件开发,提高开发效率,避免重复造轮子。定位到MVC上,MVC解决的是我们程序的总体架构,决定了我们的程序由哪几部分构成。

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

二、MVC的详细释义:

MVC是软件企业级架构中的一种。下图是一个典型的企业系统分层。

 

 

根据上图,结合MVC思想,我们可以对照出以下关系:

视图<->V

命令与控制<->C

业务逻辑、数据<->M

这样的关系,在我们使用的框架中随处可见。下边我对MVC的功能介绍及分工做大致介绍。

一、M:

模型M,主要负责软件业务逻辑处理,将系统功能分成一个个独立的功能模块,具体到php开发中,M的实现是必须避免$_POST,$_SESSION等这样的超全局变量的。M应该具有一般化的输入和一般化的输出,这样才能使M具有更强大的可复用性。现在有很多开发人员,认为M就是数据库,其实这是不对的,数据库层是比M更低一级的封装。M是业务逻辑层,虽然和数据打交道,但绝不是在M中简单地写点点数据库操作,什么update select。M是完整的业务逻辑功能模块,比如我们写个user M,user应该具有 登录login($username,$password),退出logOut($username)这样的业务函数。

二、V:

视图层,展示数据。很多人认为在视图中不能写php,写php是种极为糟糕的设计。简单地认为,写php就不是数据分离。个人观点,在视图中将M返回的数据直观地打印出来,没有复杂的业务逻辑参杂其中就算数据分离了。

三、C:

控制器是什么?控制器是将各种请求分解到M上,并根据M将数据返回到合适的V上的东西。现状,不少人在C中写了大量的业务逻辑代码,将C变成了CM,而M纯粹沦为了数据层。

个人觉得,C做的工作,只有三种:

1、输入前整理,将$_POST,这样的强环境相关的数据变成通用的,统一的数据,也就是变成M需要的标准输入。

2、M输出后整理,由于M是标准输入,标准输出,输出的结果,往往不能直接返回到V,这时就需要C做一些特定化的处理,比如用户登录函数login()返回了一个状态码,那么我么就可以在C中定义这个状体码对应的意义,再返回到V。

3、异常处理,在C中我们可以用try catch方法捕捉M中可能返回的异常,使我们的M更专注于业务逻辑的处理,而异常的信息由C来统一处理。

发布了51 篇原创文章 · 获赞 15 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章