该原创文章首发于微信公众号“字节流动”

Android 常用的架构主要有 MVC,MVP,MVVM 以及 Clean 。以上架构设计模式没有绝对的优劣之分,关键要看具体的应用场景。更多关于 MVC,MVP 以及 MVVM 介绍可以参考MVC,MVP & MVVM

什么是 Clean 架构?

Clean 架构是由 Uncle Bob 在 2012 年发表的, 针对 Web App 的架构设计。

Bob大叔总结了各种系统架构的共通之处以及最终目标,并提出只需秉持分层与依赖规则的原则, 提出了 Clean 架构思想。

Clean 架构浅析

单向依赖

Clean 架构各层之间的依赖是单向的,只能是外层依赖内层。

MVP VS Clean

从上图可以看到 Clean 架构的 Android 实现,实际上是对目前比较流行的 MVP 架构进行改造。

MVP 之 View 和 Presenter 层作为 Clean 架构的 Presentations Layer, 新增 Domain Layer 处理所有的业务逻辑。MVP 中的 Model 层功能被弱化,作为 Data Layer 对外只提供接口,不再有业务逻辑。 一般来说每一层都有独立的数据模型。

Clean 之 Presentation 层

包含如下类:

  • Presenter 和 View 层相关类,当然你也可以在 MVVP 架构基础之上进行改造。
  • Mapper 类,负责将 Domain 层的数据模型转换为 Presentation 的数据模型。
  • 本层的异常封装类。

Clean 之 Domain 层

Domain 层不依赖于 Android 类库和第三方库,可以独立做单元测试。

包含如下类:

  • Use Cases (Interactor)类,负责完成对 Data 层的某一操作行为。(如获取 movie list ,获取某一 movie 的 detail info 可视为 2 个 Use Case 或 Interactor)。
  • Mapper 类,负责将 Data 层的数据模型转换为 Domain 层的数据模型。
  • 本层的异常封装类。

Clean 之 Data 层

图片来自 Robert C. Martin (Uncle Bob)

这张图就足够说明一切了。

包含各种 API 接口,主要对应数据库操作,文件操作以及网络数据操作,一些异常封装类。
Mapper 类,负责将网络数据模型转换为 Data 层的数据模型。

注意 Data 层只提供接口,没有业务逻辑。

Android Clean 架构实现

一个基于 Clean 架构以及 Retrofit , RxKotlin , Dagger 框架实现的 Kotlin for Android App 。

参考

  • https://github.com/googlesamples/android-architecture/tree/todo-mvp-clean/
  • https://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/

联系与交流

微信公众号

个人微信

更多相关文章

  1. Android(安卓)Acrchitecture Components( 架构组件)+热门框架(Re
  2. 我的Android进阶之旅------>Android(安卓)关于arm64-v8a、armeab
  3. Android(安卓)pm命令 以及在终端安装卸载安装包方法
  4. Android(安卓)开发环境搭建、配置(基于Windows操作系统、MyEclips
  5. 微信Android模块化架构重构实践
  6. android LinearLayout等view如何获取button效果
  7. Android学习杂记(二):异步任务AsyncTask详解
  8. Java/Android回调——由一段Bmob查询操作引发的思考
  9. Android使用JobService实现后台服务

随机推荐

  1. android下修改hosts文件不起作用(无效)的解
  2. Android的Handler总结
  3. Android(安卓)Animation学习笔记
  4. Android系统中UID
  5. android 简单同步与异步
  6. Android复制assets目录下的图片到内存
  7. Android设计模式系列-单例模式
  8. android设置主题和自定义主题的方法
  9. Android的webview研究
  10. android的消息处理机制(图+源码分析)——Lo