《架构整洁之道》摘录 – 22
第 22 章 – 整洁架构
按照这些架构(六边形架构、DCI 架构、BCE 架构)设计出来的系统,通常都具有以下特点:
- 独立于框架
- 可被测试
- 独立于 UI
- 独立于数据库
- 独立于任何外部机构
以几个同心圆画出来的整洁架构示意图,从里到外,各层分别是
- 业务实体(系统级业务逻辑)
- 用例(应用级业务逻辑)
- 控制器、展示器、网关(接口适配器)
- Web、用户界面、数据库、设备、外部接口(框架与驱动程序)
依赖关系规则
源码中的依赖关系必须只指向同心圆的内层,即由低层机制指向高层策略。
业务实体
整个系统的关键业务逻辑。
系统中最不容易受外界影响而变动的部分。
用例
通常包含的是~特定应用场景~下的业务逻辑。
用例引导数据在业务实体之间的流入/流出,并指挥着业务实体利用其中的关键业务逻辑来实现用例的设计目标。
接口适配器
负责将数据从对用例和业务实体而言最方便操作的格式,转化成外部系统(譬如数据库以及 Web)最方便操作的格式。
譬如,如果我们采用的是 SQL 数据库,那么所有的 SQL 语句都应该被限制在这一层的代码中——而且是仅限于哪些需要操作数据库的代码。
框架与驱动程序
一般是由工具、数据库、Web 框架等组成的。在这一层,我们通常只需要编写一些与内层沟通的黏合性代码。
真正的架构很可能会超过四层。并没有某个规则约定一个系统的架构有且只能有四层。
当我们进行跨边界传输时,一定要采用内层最方便使用的形式。