本文旨在记录最近总结的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还不成熟,学习可用。用兴趣的同学可参考这两篇文章:

完全掌握Android Data Binding

Data Binding(数据绑定)用户指南

还有两个MVP的例子:

https://github.com/hongyangAndroid/Android_Blog_Demos/

https://github.com/antoniolg/androidmvp

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐