浅谈MVC、MVP和MVVM架构
来源:互联网 发布:网络管理的创新和发展 编辑:程序博客网 时间:2024/05/29 12:08
1、MVC架构
MVC(Model-View-Controller)是最常见的软件架构之一,应用十分广泛。
1) 软件可以分成三个部分:
① 视图(View):用户界面。
② 控制器(Controller):业务逻辑。
③ 模型(Model):数据保存。
2) 三个部分之间的通信方式:
① View接受用户的指令。
② View将请求传送给Controller。
③ Controller完成业务逻辑后,要求 Model 改变状态。
④ Model更新View的数据。
3) MVC架构的特点:
所有通信都是单向的。
2、MVP架构
将 Controller 改名为 Presenter,同时改变了通信方向。和MVC不同的是,Presenter会反作用于View,而MVC中Controller只会被动地接受View的指挥。
在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。
MVP与MVC的区别是MVP中的Model与View之间不通信。
1) MVP架构的特点:
① 各部分之间的通信都是双向的。
② View 与 Model 不发生联系,都通过 Presenter 传递。
③ View 不部署任何业务逻辑,即没有任何主动性,称为被动视图,所有逻辑都部署在Presenter。
2) 三个部分之间的通信方式:
① View接受用户的指令。
② View将请求传送给Presenter。
③ Presenter完成业务逻辑后,要求 Model 改变状态。
④ Model通知Presenter数据更新。
⑤ Presenter更新View的数据。
3) MVP架构的优势:
① Model与View完全分离,修改互不影响。
② 高效:主要的程序逻辑都在Presenter里实现。
③ 一个Presenter可用于多个View,而不需要改变Presenter的逻辑,因为View总是比Model变化频繁。
3、MVVM架构
将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。
MVVM与MVP的区别是它采用双向绑定,处理接收事件和View更新的工作不再需要开发者来完成,而可以交给框架。
1) MVVM架构的特点:
双向绑定——View/Model的变动,自动反映在 ViewModel,反之亦然。
2) 三个部分之间的通信方式:
① View接受用户的指令。
② View将请求传送给ViewModel。
③ ViewModel完成业务逻辑后,要求 Model 改变状态。
④ Model通知ViewModel数据更新。
⑤ ViewModel更新View的数据。
3) MVVM架构的优点
① 低耦合:View和Model可以相互独立地修改,一个ViewModel可以绑定到不同的View上,View变化时Model可以不变,Model变化时View也可以不变。
② 可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
③ 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,生成xml代码。
④ 可测试:测试可以针对ViewModel来写。
- 浅谈MVC、MVP和MVVM架构
- 浅谈 MVC、MVP 和 MVVM 架构模式
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- MVC,MVP 和 MVVM架构
- 浅谈 MVC MVP MVVM
- 浅谈MVC、MVP、 MVVM
- 剑指offer-60.把二叉树打印成多行
- mysql查询锁表及删除连接
- 异步拖拽上传文件--小实例
- 点击按钮生成新的按钮、表格,同时之前的按钮失去功能
- 17. Letter Combinations of a Phone Number 回溯算法
- 浅谈MVC、MVP和MVVM架构
- 使用IDEA及Gradle创建Java项目
- 数据库优化——MySQL锁问题
- Kafka端到端审计
- jsp内置对象的简单几个小题。
- gdb调试---core文件生成 core文件大小为0
- self 与 this 类内部,外部使用,
- AngularJS基于树的控制组件
- RPG角色生成器