理解MVC/MVP/MVVM的区别
2024-10-07 00:43:24
转载至【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)
- 各部分之间的通信,都是双向的。
- View 与 Model 不发生联系,都通过 Presenter 传递。
- View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
MVVM
MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。
M(Model)V(View)V(View)M(ViewModel)
唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和 Ember 都采用这种模式。
最新文章
- Java语言中的面向对象特性总结
- MySQL服务 - MySQL 5.5编译安装
- IOS和Android支持的音频编解码
- unreal3的viewport和client
- Java集合---面试题
- 如何用MAT分析Android应用内存泄露
- 连接db2数据库时NumberFormatException异常的解决方式
- UVALive - 6955 Finding Lines 随机算法
- contiki-main.c 中的process系列函数学习笔记 <;contiki学习笔记之六>;
- 【Kafka入门】搭建Kafka本地环境
- Java面向对象程序设计--泛型编程
- HTML Meta, http-equiv, Refresh
- (转)浅谈dedecms模板引擎工作原理及自定义标签
- C语言中命名空间的实现
- hdu 2054 A == B ? (java)
- 十一:Java之GUI图形Awt和Swing
- spring整合JMS - 基于ActiveMQ实现
- java设计模式(二)
- ABP入门系列(18)—— 使用领域服务
- jvm - 垃圾回收