一、MVC的理解
1、MVC是什么
MVC, 即Model-View-Controller, 基于页面逻辑的修改要多于业务逻辑, 分离两种逻辑减少类代码的修改
- Model: 即数据层, 负责处理业务逻辑, 监听网络与数据库接口
- View: 即界面(UI)层, 显示来源于Model的数据
- Contoller: 即逻辑层, 传递用户的交互和更新Model的数据
2、MVC流程图
3、MVC的优点
1)耦合性低,视图层和业务层分离
2)可维护性高,简单,方便修改
4、MVC的缺点
1)不适合小型,中等规模的应用程序
2)视图与控制器间的过于紧密的连接
3)视图对模型数据的低效率访问
5、适用场景
项目体量较小,维护频率不高的应用
二、MVP理解
1、mvp是什么
MVP属于MVC的演化版本,目的是让Model和View完全解耦
- View:对应于Activity,负责View的绘制以及与用户交互
- Model:业务逻辑和实体模型
- Presenter:负责完成View于Model间的交互
2、MVP流程图
3、MVP优点
1)解耦,模型与视图完全分离
2)模块职责划分明显
3)代码复用,灵活
4)测试方便,可脱离UI
4、MVP缺点
1)视图和Presenter的交互会过于频繁
2)增加来很多类文件
5、适用场景
项目如果过于庞大,且需要频繁对于view进行调整或者变更的项目不适用于此模式,常规的中小型应用适合于当前业务需求
三、MVVM理解
1、MVVM是什么
Model:数据层,包含数据实体和对数据实体的操作
ViewModel:关联展示层,将Model和View进行绑定,Model或者View更改时,实时刷新对方。ViewModel只做和业务逻辑相关的工作,不涉及任何和UI相关的操作,不持有控件引用,不更新UI
View只做和UI相关的工作,不涉及任何业务逻辑,不涉及操作数据,不处理数据。UI和数据严格的分开
2、MVVM流程图
3、MVVM本质
1.解耦,区别于MVC不会产生巨量代码,区别于MVP不会产生大量接口
2.职责更加明确,在mvp模式中,p需要持有V的引用,才能去刷新UI,在MVVM模式中,View和Model使用databingding进行双向绑定,一方改变会直接通知另外一方,使得viewModel能专注于业务逻辑的处理,而不需要去关心UI刷新
4、DataBinding和MVVM关系
MVVM是一种架构模式,DataBinding是一个实现数据和UI绑定的框架,是实现MVVM模式的工具
5、MVVM优点
1)低耦合。View可以独立于Model变化和修改,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
2)ViewModel可复用
3)独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,生成xml代码。
4)双向绑定时,ViewModel解决MVP中View(Activity)和Presenter相互持有对方应用的问题,界面由数据进行驱动,响应界面操作无需由View(Activity)传递,数据的变化也无需Presenter调View(Activity)实现,使得数据传递的过程更加简洁,高效。
6、MVVM缺点
1)数据绑定使得 Bug 很难被调试
2)数据双向绑定不利于代码重用
7、MVVM适用场景
业务处理逻辑大多数在后端的情况下前端只要做展示而不需要做大量的业务处理的项目