MVC和MVP的区别
来源:互联网 发布:sql如何调用存储过程 编辑:程序博客网 时间:2024/05/22 06:50
MVC和MVP的区别
1. MVC的所有通信都是单向的。
2. view传送指令到controller(用户也可以直接将指令传到controller)。
3. controller完成业务逻辑后要求model改变状态。
4. model将新的数据发送到view,用户得到反馈。
1.MVC虽然将界面呈现和逻辑代码分离了,但是在实际的Android开发中并没有完全起到想要的作用。View对应的XML文件实际能做的事情很少,很多界面显示由Controllor对应的Activity给做了,这样使得Activity变成了一个类似View和Controllor之间的一个东西。
2.如果是小型项目,MVC是没任何问题的。因为项目比较小嘛,开发周期比较短,Controllor臃肿点也可以理解。假设项目越来越来,尤其是再加上比较复杂的逻辑,这时候一个Activity几千行代码就比较蛋疼了,再加点迷之缩进,那酸爽~~啧啧。所以MVC比较适用于快速开发的小型项目。因为在在Android开发中,Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户 界面,并接受并处理来自用户的操作请求,进而作出响应。随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿。
MVP框架由3部分组成:View负责显示,Presenter负责逻辑处理,Model提供数据。在MVP模式里通常包含3个要素(加上View interface是4个):
View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity)
Model:负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合)
Presenter:作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。
View interface:需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试
1. 各部分之间的通信都是双向的。
2. View与Model不发生联系,都通过Presenter传递
3. View非常薄,不部署任何业务逻辑,称为“被动视图”,即没有任何主动性,而Presenter非常厚,所有逻辑都
部署在这里。
流向图
缺点
MVP模式虽然很好,但是增加了很多的接口和实现类。代码逻辑虽然清晰,但是代码量要庞大一些。当刚接手一 个烂尾的MVP模式,如果事先没了解过MVP,会不会一脸的懵逼。所以MVP比较适用于中小型的项目,大型项目 慎用。
二者区别
View与Model并不直接交互,而是通过与Presenter交互来与Model间接交互。而在MVC中View可以与Model直接交互
通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑。而Controller是基于行为的,并且可以被多个View共享,Controller可以负责决定显示哪个View
Presenter与View的交互是通过接口来进行的,更有利于添加单元测试。
- MVC和MVP的区别
- MVC和MVP的区别
- MVC和MVP的区别
- MVC和MVP的区别
- MVC和MVP的区别
- MVP和MVC的区别
- MVC和MVP的区别
- MVC和MVP的区别
- MVC和MVP和MVVM的区别
- MVC,MVP 和 MVVM 的图示区别
- mvp,mvc和mvvm的区别
- MVC,MVP 和 MVVM 的区别
- Android之MVC和MVP的区别
- MVC、MVP和MVVM的区别
- iOS中的MVC和MVP的区别
- Android MVC和MVP的区别
- MVC、MVP和MVVM的区别
- MVC,MVP 和 MVVM的图示区别
- 李飞飞:物体识别之后,计算机视觉的进展、目标和前景何在?
- 【LeetCode】C# 11、Container With Most Water
- 【bzoj2257】【JSOI2009】瓶子和燃料
- 如何从txt中或者codeblocks中提取出某一列的数值
- 电影地址
- MVC和MVP的区别
- iOS Git~分支管理
- 字典
- Android中的MVP模式,带实例
- 22:神奇的幻方
- EasyPlayer支持H265视频解码
- (一)命名风格
- iOS Git~血泪经验注意点
- Karaf教程第3部分 使用OSGi Metatype服务和Felix Webconsole改善配置编辑