首页 > 代码库 > MVC 编程模式及其变种

MVC 编程模式及其变种

MVC 编程模式及其变种

MVC的全名是Model View Controller, 是模型(model)-视图(view)-控制器(controller)的缩写,这是一种很常见的编程模型.MVC最早提出的时候是为了把数据和视图分离开来,然后用控制器作为胶水来粘合数据和实体之间的关系.这就是关注点分离的设计理念,也是单一职责原则(Single-Resposibility Principle).

在我们的开发过程中, 视图用来展现界面, 我们的模型处理业务, 持有数据, 而控制器是他们之间的中间人.

GoF四人组认为MVC是"一组用于构建用户界面的类的集合,是其它三个经典的设计模式的演变:观察者模式, 策略模式, 组合模式".具体的实现可能还会用到工厂模式,装饰器模式,桥接模式,中介者模式.

下面介绍一下MVC及其变种

VC模式(view --> controller)

这种模式用于简单的界面,代码量不多的情况.一般业务代码都是控制器里.

  1. 用户点击屏幕,传递一个点击事件给视图
  2. 视图把点击事件传递给控制器
  3. 控制器执行逻辑
  4. 控制器把新的数据返回给视图
  5. 视图展示新的数据给用户

VMC模式(view --> model --> controller)

这种模式下面,视图先传递的对象是模型,模型能处理的话,根本就不通知控制器,可以减轻控制器的代码量

  1. 用户点击屏幕, 传递一个点击事件给视图
  2. 视图把点击事件传递给模型
  3. 模型处理点击事件
  4. 模型处理不了的和额外要处理的发消息给控制器
  5. 控制器执行逻辑
  6. 控制器把数据返回给模型
  7. 模型再把数据返回给视图
  8. 视图展示新的数据给用户

VCM模式(view --> controller --> model)

这种就是我们最常见的mvc模式了

  1. 用户点击屏幕, 传递一个点击事件给视图
  2. 视图把点击事件传递给控制器
  3. 控制器调用模型
  4. 模型执行逻辑
  5. 模型通知控制器,并返回数据
  6. 控制器接到数据后返回给视图
  7. 视图展示新数据

其实折腾这些,最终目的还是为了明确边界,让多人可以并行工作.

MVC 编程模式及其变种