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. 视图展示新数据

事实上,折腾这些,最后目的是了解边界,因此,人们可以并行工作.

版权声明:本文博主原创文章。博客,未经同意不得转载。

最新文章

  1. Oracle插入日期格式出现 ORA-01843: not a valid month的解决办法
  2.  非法字符 原因 以及解决办法
  3. [转载] 数据库分析手记 —— InnoDB锁机制分析
  4. 微软TechEd2013大会门票热卖!
  5. python3爬虫初探(三)之正则表达式
  6. matio使用
  7. CentOS6.5配置vim使支持Python
  8. POJ 3614 Sunscreen 优先队列 贪心
  9. Black Box《优先队列》
  10. Java输入输出流(转载)
  11. ACM做题过程中的一些小技巧
  12. Demo4
  13. SlidingMenu的使用详解
  14. Python3:字符串的大小写和镜像字符串(swapcase()函数,chr(),ord(),translate()函数)
  15. xshell 使用root 连接ubuntu server
  16. 30天代码day2 Operators
  17. 【XSY1551】往事 广义后缀数组 线段树合并
  18. --HTML标签2
  19. golang的urlrouter
  20. 使用Git下载Hadoop的到本地Eclipse开发环境

热门文章

  1. 2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理
  2. Android访问服务器(TOMCAT)乱码引发的问题
  3. sql 添加用户
  4. ComboBox 自动调整组合框下拉部分的宽度
  5. mysql声明摘要
  6. Android SharedPreferences复杂的存储
  7. 我学cocos2d-x (两) 采用Delegate(信托)
  8. Redis源代码分析(二十八)--- object创建和释放redisObject物
  9. HSV 量化
  10. 恢复SQLServer实例连接