博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Clean 架构
阅读量:4088 次
发布时间:2019-05-25

本文共 1056 字,大约阅读时间需要 3 分钟。

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 做集成和单元测试。

学习项目

  • [](

转载地址:http://nskii.baihongyu.com/

你可能感兴趣的文章
STM32CubeMX介绍、下载与安装
查看>>
不要买铝合金机架的无人机,不耐摔,易变形弯曲。
查看>>
ACfly也是基于FreeRTOS的
查看>>
F330装GPS的位置
查看>>
pixhawk也可以用Airsim仿真
查看>>
《无人机电机与电调技术》可以看看
查看>>
我发现七月在线的GAAS课程基本都讲到了
查看>>
电机堵转
查看>>
carzepony也在想往FreeRTOS上迁移
查看>>
可以买个好点的电烙铁
查看>>
ACfly调参记录(包括ACfly-F330和ACfly-T265)
查看>>
一定记得每飞几次或者隔一天要把螺丝和浆帽拧一次,确实会松的
查看>>
《多旋翼无人飞行器嵌入式飞控开发指南》里基于FreeRTOS的无人机软件框架
查看>>
思岚A1的SDK其实很好读懂,每个函数清晰明了,可以直接调用
查看>>
pixhawk(PX4)的一些论坛网站(包括中文版的PX4用户手册和PX4开发手册)
查看>>
串级 PID 为什么外环输出是内环的期望?(和我之前对串级PID的总结一样)
查看>>
我刚刚才完全清楚GPS模块的那根杆子是怎么固定安装好的
查看>>
去github里面找找也没有别人无人机+SLAM的工程
查看>>
PX4与ROS关系以及仿真控制(键盘控制无人机)
查看>>
我对无人机重心高度的理解
查看>>