MVC模式是软件工程中一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
——来自Wikipedia
MVC这种架构模式,相信熟悉模式与框架的程序员一定不会陌生。它是在Smalltalk语言中诞生的,在Java、PHP等等更多的面向对象的语言中流行起来。现在许多非常流行的框架都是基于MVC模式,如JS编写的Angular JS框架等。
web程序中通常有许多“层”(Layer),它们都可以独立工作并且分工明确,下面是一个典型的MVC架构模式。
首先用户的Http请求会通过路由或其他方式传递给控制层
控制层处理用户请求,然后将实际工作委托给数据模型层获得数据后选择合适的视图将结果显示给用户。
数据模型层负责管理数据的持久化以及对数据进行操作。
视图层包括系统用户实际看到和交互的界面,负责将用户请求传递给控制层及将请求结果显示给用户,一般视图层会与数据模型层相对应。
你在移动通信上遇到问题时就会拨打移动的客服号码,你刚打进去的时候并不知道会是哪个客服来处理你的请求,你唯一的入口就是10086。所以你的请求(request)就通过电话传递给中国移动,中国移动那边不会直接来一个客服处理你的要求,而是让你选你自己需要什么服务,是充值业务呢还是别的什么业务,这都属于请求中的内容,这些可选内容其实就是中国移动的业务逻辑。
选好之后它就开始给你分配一个客服,这个“分配”的过程其实就是控制层做的事情,而客服其实就是视图层。系统通过查看请求选择的业务逻辑来选择一位客服为你服务,其实就是控制层通过请求选择的业务逻辑来选择视图将内容呈现给你。
Model部分是数据层,业务逻辑操作的就是数据层,中国移动的业务逻辑都是存储在数据库中的,当你问相关客服一些信息时,客服也可以修改或处理你的信息,这就是因为客服操作的内容跟Model业务逻辑基本是相对应的。与此同时,一个Model业务逻辑可能对应着好几个客服,这就是模型与视图的一对多关系。
为什么要使用MVC模式呢?MVC有哪些优点?
1:耦合性低
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2:重用性高
随着技术的不断进步,需要用越来越多的方式来访问应用程序。MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。
3:可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
总结:MVC就是一种框架的模式,它有模式共有的优点——将系统层层分离,每一层都分工明确,使得系统维护和复用代码更为容易;它也有自己特别的优点——融合了观察者模式、组合模式以及策略模式的优点,视图实时反映模型并且可以通过多种方式反映模型,以及我们未谈论的视图嵌套以及其他优点。
链接:http://www.jianshu.com/p/a5757754873b
网友评论