Android Architecture: Part 3 – Applying Clean Architecture on Android
本次翻译的是five.agency.android的博客文章。
原文链接:Android Architecture: Part 3 – Applying Clean Architecture on Android
本次翻译不照搬原始文章中的每一个单词,原文请跳转链接!
The Android Clean Architecture Diagram
移除一些在Android项目中不会用到的东西。
It looks like this:
从抽象的中心区域分析到边缘。
Entities
Entities,也称为 domain objects,business objects,是项目的核心。
- 它包含业务逻辑,但是仅限于验证它自己或者类似的东西。
- 它不会和平台相关的细节直接交互,比如不会处理持久化这种东西。
- 举例,比如是新闻相关的项目,Entities is Category, Article, and Commercial, e.g。
Use cases
Use cases,也称为 interactors,business services,是Entities / business logic的扩展。
- 它会对多个Entities 进行一些逻辑处理。
- 举例,比如 “将钱从一个账户转到另一个账户”
Repositories
Repositories用于持久化Entities。
- 它是Use cases 的 Output Port。
- 它是interfaces,具体的持久化策略,例如DB,Internet在外层实现。
Presenters
Presenters的正式叫法应该是 supervising controller,即监督控制器。
- 它处理用户交互,调用适当的business services,并将数据发送到UI进行渲染。
Device
Device包含了平台相关技术细节,比如 sensors, alarms, notifications, players, Managers。
具体包含2个部分:
- 第一部分,定义在Use cases中的接口,用于作为 Output Port,例如命名为Gyroscope, Alarm, Notifications, Player, etc,都是抽象相关的。
- 第二部分,是接口的具体细节,大多数是Android Mannager类的包装类。
DB & API
DB & API是Repositories的具体策略细节,比如ROOM,Retrofit等等。
UI
Android UI相关的东西,Activitys,Fragments,Views,Adapters,etc.
最后,将这些进行分组。
Android studio Modules
like this:
-
domain module
该module可以为一个纯Java module。
entities, use cases, repositories, and device interfaces. -
device module
everything related to Android.
-
data module
everything related to data persistence. DB,API,e.g.
-
app module
UI,presenters.
Clean architecture: It may be complicated – but it’s worth it
易于测试,易于修复,易于新功能,代码易读和维护,everything works perfectly。
It looks like this:
满足单一职责原则
业务逻辑和平台隔离
易于测试
满足利益相关者
该篇只是Clean Architecture在Android上的理论基础,还有一篇是Five的一篇Sample相关,这里就不再一一翻译了。
有需要的可以跳转一下链接,分别是博文和源码地址
博文: Five Agency Android Clean Architechture
源码: Sample source code