Android 项目架构探索
Android Architecture
概述
该项目结合 MVP 与 Clean 架构思想,探索在 Android 项目上的最佳实践。
遵循 Clean Architecture 的原则。
- 数据层(Data Layer):加入数据转换层(Mapper)将服务端数据模型(Entity)与本地数据模型(Model)解耦。
- 业务层(Domain Layer):按模块划分业务,具体业务交给 Usecase 处理。
- 显示层(View Layer): Presenter 不再与 Activity/Fragment 一一对应,Presenter 按照业务模块划分功能,大大提高 Presenter 的复用性。Activity/Fragment 中可以实现多个 View,持有多个 Presenter 来完成业务逻辑。
示例
分支 | 描述 |
---|---|
master | 演示了 Model-View-Presenter(MVP)+ Clean 架构,提供一些基类,状态栏沉浸适配等 |
develop | 使用 butterknife |
develop-dagger | 加入 dagger 的支持 |
develop-dagger-rxjava | 加入 rxjava 的支持 |
数据层(Data Layer)
数据层(Data Layer)主要是数据获取与数据缓存策略的处理。
比如:第一次获取到数据,缓存到持久层(持久层可以放入数据库,SharedPreferences,文件或者其他形式)和内存中;第二次获取数据时应优先从内存中读取,其次是持久层,若本地缓存失效则直接从远程服务端获取,然后缓存到本地。
具体实现参见 UserRepository
业务层(Domain Layer)
业务层(Domain Layer)主要是根据业务需求来操作数据的逻辑。业务层将每条需求交个 Usecase 来处理,Usecase 通过 Repository 来获取数据。业务层与数据层解耦,方便扩展与测试。
具体实现参见 LoginRemoteTask
显示层(View Layer)
显示层(View Layer)主要是数据的展示与更新操作。显示层通过 Presenter 与业务层交互,Activity / Fragment 与 Presenter 解耦,将业务实现由 Presenter 组合而成。Presenter 与 View 对应,Activity / Fragment 由多个 View 管理。
具体实现参见 LoginActivity
项目结构
参考资料
项目地址
https://github.com/jeanboydev/Android-Architecture