1. Android开发主流的技术框架
- 主要有
MVC
、MVP
、MVVM
3种模式 - 下面,我将详细 & 具体的介绍上述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