知识卡片
端口和适配器:区分领域与基础设施代码,并用独特领域语言命名
内容
相比[[按层封装与按功能封装的对比水平分层无法体现业务领域信息]]的两种方式,端口和适配器(也就是六边形架构、边界控制器实体等[[整洁架构综合多种架构思想的五个共同特征与依赖关系规则]]所属思路的落地)把代码分成内部区域(领域,Domain)和外部区域(基础设施,Infrastructure):内部区域包含所有领域概念,外部区域包含与外界交互的部分(UI、数据库、第三方集成),核心规则是只有外部代码能依赖内部代码,反过来不行。用”查看订单”这个用例举例,com.mycompany.myapp.domain包是内部代码,另一个包是外部代码,依赖方向由外向内——这里一个值得注意的细节是,原本的OrderRepository接口被改名为Orders:这源自领域驱动设计的理念,要求内部代码统一使用独特的领域语言来描述,业务领域里该讨论的是”Orders”(订单本身),而非”OrdersRepository”这种暴露了”这是个仓储实现”的技术性命名——命名本身也是划清内部/外部边界的一种手段。
参考来源
- 位置:《架构整洁之道》第34章《拾遗》"端口和适配器"(源文件:_epub-src/text/part0015_split_004.html)
- 结论依据:原文说明端口和适配器将代码分为领域(内部)与基础设施(外部)两个区域、只允许外部依赖内部,并指出OrderRepository被改名为Orders是领域驱动设计要求内部代码使用独特领域语言的体现,直接支撑本卡片结论。
- 原始内容:内部区域包含了所有的领域概念,而外部区域则包含了与外界交互的部分……这里主要的规则是,只有外部代码能依赖内部代码,反之则不能……这个概念基于领域驱动设计理念,其中要求内部代码都应该用独特的领域语言来描述。