Clean 一般是指,代码以洋葱的形状依据一定的依赖规则被划分为多层:内层对于外层一无所知。这就意味着依赖只能由外向内。
Clean 架构的准则:
- 架构独立。架构不依赖于一些满载功能的软件库。
- 可测试性。业务规则可以在没有 UI、数据库等外部元素的情况下完成测试。
- UI的独立性。在不改变系统其余部分的情况下完成UI的简易修改。
- 数据库的独立性。业务规则不绑定数据库,可以随意更换数据库的实现。
- 外部机制独立。业务规则不知道外层的事情。
Framework and Drivers
框架或者驱动,包括 UI、框架、数据库实现、网络实现细节等。
Interface Adapter
接口适配层,负责将实现细节和业务逻辑连接起来的粘合层。
Business rules(Interactors)
业务规则,整合了实现系统需要的所有实例。
Domain logic
封装了业务实体。实体可以是包含有方法的对象,或者一系列的数据结构、函数。
依据这些规则将工程分为三层: