Android架构学习笔记
1.1. MVC
缺点
- Activity即当View、又当Controller,代码很容易边得臃肿,难以阅读和维护;
- 很多业务逻辑放在Activity中,妨碍了业务模块的复用;
1.2. MVP
MVP解决了Activity即是View又是Controller的问题
增加了Presenter层,作为View和Model交互的中间纽带
优点
- 分离了视图逻辑和业务逻辑,降低了耦合,Activity只处理生命周期相关的任务,代码变得更简洁;
- 面向接口编程,Presenter层可以多种实现,也可以被多个View复用
- 把业务逻辑放到Presenter了,防止Activity持有一些业务相关的对象引发OOM的问题
缺点
- Presenter负责View的渲染,View和Presenter交互过于频繁,如果View层改变,Presenter也要跟着改变
1.3. MVVM
ViewModel层和Presenter层的作用类似,不同的是,使用了DataBinding将数据和UI进行了绑定
优点
- 很好的数据一致性,model层数据更新了,就会同步到View层
- 生命周期感知,避免内存泄漏
缺点
- 一个页面可能绑定了很多个LiveData,当显示错误时难以排查
- View复用性差,因为View都绑定了ViewModel,所以复用时也要修改绑定的代码