MVC是一种架构设计模式,其目的实现Web系统的职能分工,它把应用程序分为三个核心的模块:模型(Model)、视图(View)、控制器(Controller)。
1、模型(Model)、视图(View)、控制器(Controller)各部分的作用
模型(Model):负责封装应用的状态,并实现应用的功能。模型通常分为数据模型和
业务逻辑模型。
数据模型用来存放业务数据,如用户信息、订单信息;
业务逻辑模型一般是应用的业务操作,比如信息的添删。
视图(View):用于与用户交互,用户可以通过视图来请求模型进行更新,
视图将模型中的数据内容展现给客户端。
控制器(Controller): 调度视图和模型的作用,它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
在MVC中,模型和视图是分离的,通常视图里面不会有任何逻辑实现,而模型也是不依赖于视图的,同一个模型可以对应多种不同的视图。
模型负责输出的内容,而视图负责输出的形式,模型不依赖于视图,模型与视图是解耦的。
2、MVC的组件关系图
MVC的组件关系图描述了模型、视图、控制器的交互关系:
(1)用户请求访问某一视图,控制器选择视图给用户,用户在视图上进行操作,并填写一些业务数据,提交按钮发出请求。
(2)视图发出的用户请求会到达控制器,请求中包含了想要完成什么样的业务功能以及相关的数据。
(3)控制器会处理用户请求,先把请求中的数据进行封装,然后选择并调用合适的模型,请求模型进行状态更新,然后选择接下来要展示给用户的视图。
(4)模型处理用户请求的业务功能,同时进行模型状态的维护和更新。
(5)当模型状态发生改变的时候,模型会通知相应的视图,告诉视图它的状态发生了改变。
(6)视图接到模型的通知后,会向模型进行状态查询,获取需要展示的数据,然后按照视图本身的展示方式,把这些数据展示出来。
3、MVC的优点
(1)多个视图可以共享一个模型,提高代码的可重用性;
(2)三个模块之间相互独立。其中一个改变不影响其他两个,使得构件之间具有良好的松耦合性。
(3)控制器提高了应用程序的灵活性和可配置性。控制器可以联接不同的模型和视图去完成用户的请求。