转载至【http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

MVC

所有的通信都是单向的。

M(Model)V(View)C(Controller)

View:视图:用户界面--是直接面向最终用户的“视图层”,是能与用户操作交互的界面。

Model:模型:数据保存--是核心的“数据层”,是程序要操作的数据或信息。

Controller:控制器:业务逻辑--负责根据用户从“视图层”输入 的指令,选取“数据层”中的数据,然后对其进行相应操作后,产生最后结果。

  • 用户可以向 View 发送指令(DOM 事件),再由 View 直接要求 Model 改变状态。
  • 用户也可以直接向 Controller 发送指令(改变 URL 触发 hashChange 事件),再由 Controller 发送给 View。
  • 用户也可以直接向 Controller 发送指令(改变 URL 触发 hashChange 事件),再由 Controller 发送给 View。

MVP

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向

M(Model)V(View)P(Presenter)

  1. 各部分之间的通信,都是双向的。
  2. View 与 Model 不发生联系,都通过 Presenter 传递。
  3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

M(Model)V(View)V(View)M(ViewModel)

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和 Ember 都采用这种模式。

最新文章

  1. Java语言中的面向对象特性总结
  2. MySQL服务 - MySQL 5.5编译安装
  3. IOS和Android支持的音频编解码
  4. unreal3的viewport和client
  5. Java集合---面试题
  6. 如何用MAT分析Android应用内存泄露
  7. 连接db2数据库时NumberFormatException异常的解决方式
  8. UVALive - 6955 Finding Lines 随机算法
  9. contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>
  10. 【Kafka入门】搭建Kafka本地环境
  11. Java面向对象程序设计--泛型编程
  12. HTML Meta, http-equiv, Refresh
  13. (转)浅谈dedecms模板引擎工作原理及自定义标签
  14. C语言中命名空间的实现
  15. hdu 2054 A == B ? (java)
  16. 十一:Java之GUI图形Awt和Swing
  17. spring整合JMS - 基于ActiveMQ实现
  18. java设计模式(二)
  19. ABP入门系列(18)—— 使用领域服务
  20. jvm - 垃圾回收

热门文章

  1. mysql_jdbc连接说明
  2. JS批量绑定事件
  3. Windows 端口占用查询
  4. Selenium(1)
  5. zencart更改css按钮的宽度css buttons
  6. VS2008配合SQLite开发WINCE、PDA智能设备项目环境搭设。
  7. hdf5文件、tqdm模块、nunique、read_csv、sort_values、astype、fillna
  8. 水果商城 ( Iview+ SSM + MySQL )
  9. C# dll文件添加引用失败
  10. C# Lambda表达式学习笔记