haohao

Android Clean 架构浅析

Cover

死磕 Android 架构也是一种娱乐

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

什么是 Clean 架构?

author

Robert C. Martin (Uncle Bob)

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

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

Clean 架构浅析

单向依赖

Cover

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

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

MVP VS Clean

Cover

图片来自 Google

从上图可以看到 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 层

data

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

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

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

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

Android Clean 架构实现

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

更多



联系我

Wechat ID

公众号

生活不止于眼前的苟且, 还有诗和远方的田野