1. Android开发主流的技术框架
- 主要有
MVC、MVP、MVVM3种模式 - 下面,我将详细 & 具体的介绍上述3种模式
2.1 MVC模式
- 角色说明

image
- 模式说明

image
- 该模式存在的问题:Activity责任不明、十分臃肿
Activity由于其生命周期的功能,除了担任View层的部分职责(加载应用的布局、接受用户操作),还要承担Controller层的职责(业务逻辑的处理)
随着界面的增多 & 逻辑复杂度提高,Activity类的代码量不断增加,越加臃肿
2.2 MVP模式
出现的原因
为了解决上述MVC模式存在的问题,把分离Activity中的View层 和Controller层的职责,从而对Activity代码量进行优化、瘦身,所以出现了MVP模式角色说明

image
- 模式说明

image
- 优点:(对比MVC模式)
- 耦合度更低:通过
Presenter实现数据和视图之间的交互,完全隔离了View层与Mode层,二者互不干涉
避免了
View、Model的直接联系,又通过Presenter实现两者之间的沟通
-
Activity代码变得更加简洁:简化了Activity的职责,仅负责UI相关操作,其余复杂的逻辑代码提取到了Presenter层中进行处理
2.3 MVVM
为了更加分离M、V层,更加释放Activity的压力,于是出现了MVVM模式
- 定义
VM层:ViewModel,即 View的数据模型和Presenter的合体
基本上与
MVP模式完全一致,将逻辑处理层Presenter改名为ViewModel
- 模式说明

image
- 优点
使得视图层(View)& 控制层(Controller)之间的耦合程度进一步降低,关注点分离更为彻底,同时减轻了Activity的压力
2. MVP模式详解
此处主要详细分析MVP模式的核心思想,并实例说明。
2.1 核心思想
把Activity里的逻辑都抽离到View和Presenter接口中去 & 由具体的实现类来完成。具体实现思路如下:
- 把
Activity中的UI逻辑抽象成View接口 & 由具体的实现类来完成 - 把业务逻辑抽象成
Presenter接口 & 由具体的实现类来完成 -
Model类还是原来MVC模式的Model层
2.2 实现步骤
MVP模式的UML图

image
通过UML图可看出,使用MVP模式的步骤如下:

image
- 当将架构改为MVP以后,Presenter的出现,将Actvity视为View层,Presenter负责完成View层与Model层的交互。
1.View 对应于Activity,负责View的绘制以及与用户交互
2.Model 依然是业务逻辑和实体模型(bean)
3.Presenter 负责完成View和Model间的交互
从并不标准的MVC到MVP的一个转变,减少了Activity的职责,简化了Activity中的代码,将复杂的逻辑代码提取到了Presenter中进行处理。
与之对应的好处就是,耦合度更低,更方便的进行测试。
2.3 代码示例:
参考1:https://blog.csdn.net/huangaolu/article/details/78775829
参考2:https://www.jb51.net/article/78164.htm
参考3:https://www.cnblogs.com/baiqiantao/p/5840400.html