Clean 一般是指,代码以洋葱的形状依据一定的依赖规则被划分为多层:内层对于外层一无所知。这就意味着依赖只能由外向内。
Clean 架构的准则:
框架或者驱动,包括 UI、框架、数据库实现、网络实现细节等。
接口适配层,负责将实现细节和业务逻辑连接起来的粘合层。
业务规则,整合了实现系统需要的所有实例。
封装了业务实体。实体可以是包含有方法的对象,或者一系列的数据结构、函数。
依据这些规则将工程分为三层:
MVC 或者 MVP 对应的地方,不处理 UI 以外的任何逻辑。
业务逻辑 Use Case 实现的地方。属于系统最内层。
这一层为纯 Java 代码,不牵扯任何 Android 相关依赖,规定了要做什么,具体实现细节交给外层。
所有系统需要的数据通过这一层的 Repository 获取, 这是一种 Repository 模式。Repository 接口定义是在 Domain 层,接口表示怎么去存储或者访问数据,这些是业务逻辑,但是具体的实现与业务逻辑无关,应该交给 Data 层。
1、Clean 架构中内层意味着抽象,外层意味着细节,同样一个抽象可能有多个子类,这种一对多的方式更具灵活性。
2、细节依赖抽象,业务逻辑制定规则,外层实现接口,这样能保证在内层能够调用外层组件去实现需要的逻辑,这里依据的是 DIP。
3、Clean 架构较为繁琐,如果是简单项目,完全没必要使用。