本文旨在记录最近总结的Android客户端架构,作为学习笔记,欢迎批评指正。
一、概述
MVC:Model - View - Controller
MVP: Model - View - Presenter
MVVC:Model - View - ViewModel
二、发展过程
MVC
Model:业务逻辑和实体模型;
View:布局文件;
Controller:Activity;
在Android中View对应的各种Layout布局文件,不像Web端那样强大,处理能力有限。因此,很多对UI的操作都在Activity(Controller)中进行,加上Activity本身的工作(派发事件,根据事件调用Model层数据),使得Controller的任务十分繁重,代码冗长复杂,不易维护。
为了使View和Controller的界限分明,又出现了MVP的设计模式。
MVP
Model:业务逻辑和实体模型;
View:布局文件、Activity;
Presenter:连接View和Model;
MVP不同于MVC的最重要一点:View和Model彻底分离;
MVP的出现时View和Model的耦合度降低,简化了Activity的工作。
Presenter和另外两层的交互是通过定义好的接口协议进行的,每个Presenter可能包含一个或者多个接口,使得View或Model改变的时候,Presenter不需要改变,代码复用性高。
我们可以使用测试用的View,对Presenter进行测试,方便了单元测试。
MVP更适合快速迭代开发。
MVVM
Model:业务逻辑和实体模型;
View:布局文件和Activity;
ViewModel:连接View和Model;
ViewModel通过Data Binding
和View进行双向交互,每一方的变化都会在另一方体现出来。
Data Binding
Data Binding库不仅灵活而且广泛兼容- 它是一个support库,因此你可以在所有的Android平台最低能到Android 2.1(API等级7+)上使用它。目前,Data Binding还不成熟,学习可用。用兴趣的同学可参考这两篇文章:
还有两个MVP的例子: