前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Clean 架构

Android Clean 架构

作者头像
用户3596197
发布2019-01-23 18:08:04
1.3K0
发布2019-01-23 18:08:04
举报
文章被收录于专栏:空帆船w空帆船w

Clean 一般是指,代码以洋葱的形状依据一定的依赖规则被划分为多层:内层对于外层一无所知。这就意味着依赖只能由外向内

Clean 架构的准则:

  • 架构独立。架构不依赖于一些满载功能的软件库。
  • 可测试性。业务规则可以在没有 UI、数据库等外部元素的情况下完成测试。
  • UI的独立性。在不改变系统其余部分的情况下完成UI的简易修改。
  • 数据库的独立性。业务规则不绑定数据库,可以随意更换数据库的实现。
  • 外部机制独立。业务规则不知道外层的事情。

Framework and Drivers

框架或者驱动,包括 UI、框架、数据库实现、网络实现细节等。

Interface Adapter

接口适配层,负责将实现细节和业务逻辑连接起来的粘合层。

Business rules(Interactors)

业务规则,整合了实现系统需要的所有实例。

Domain logic

封装了业务实体。实体可以是包含有方法的对象,或者一系列的数据结构、函数。

依据这些规则将工程分为三层:

Presentation Layer

MVC 或者 MVP 对应的地方,不处理 UI 以外的任何逻辑。

Domain Layer

业务逻辑 Use Case 实现的地方。属于系统最内层。

这一层为纯 Java 代码,不牵扯任何 Android 相关依赖,规定了要做什么,具体实现细节交给外层。

Data Layer

所有系统需要的数据通过这一层的 Repository 获取, 这是一种 Repository 模式。Repository 接口定义是在 Domain 层,接口表示怎么去存储或者访问数据,这些是业务逻辑,但是具体的实现与业务逻辑无关,应该交给 Data 层。

总结

1、Clean 架构中内层意味着抽象,外层意味着细节,同样一个抽象可能有多个子类,这种一对多的方式更具灵活性。

2、细节依赖抽象,业务逻辑制定规则,外层实现接口,这样能保证在内层能够调用外层组件去实现需要的逻辑,这里依据的是 DIP。

3、Clean 架构较为繁琐,如果是简单项目,完全没必要使用。

测试方法

  • Presentation Layer: 使用 AndroidInstruction 和 espresso 做集成测试和功能测试
  • Domain Layer:使用 JUnit 和 mockito 做单元测试
  • Data Layer:使用 Robolectric(这层有Android依赖)和 junit、mockito 做集成和单元测试。

学习项目

  • https://github.com/android10/Android-CleanArchitecture
  • https://github.com/crazysunj/CrazyDaily
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-18,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 JaqenTalk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Framework and Drivers
  • Interface Adapter
  • Business rules(Interactors)
  • Domain logic
  • Presentation Layer
  • Domain Layer
  • Data Layer
  • 总结
  • 测试方法
  • 学习项目
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com