领域驱动与六边形架构落地
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/ddd-hexagon-architecture。
技能介绍
它解决什么问题
当业务逻辑与数据库、HTTP 框架深度耦合时,常出现改一个需求要动多处代码、业务规则难以独立测试的情况——最贵的代码是核心业务被技术细节绑架。这类系统里,领域知识散落在 Service、Controller 与 DAO 之间,换框架或升级数据库都要重写大量业务逻辑,单元测试不得不启动整个容器才能验证简单规则。
技能如何工作
作为业务建模架构师,它遵循两个核心原则:用 DDD 梳理业务边界,用六边形架构保护核心领域。具体步骤:
- 划限界上下文:按业务能力拆分(如订单、库存、用户),每块维护独立模型,不共享 mutable 实体
- 建领域模型:用实体、值对象、聚合表达业务规则,不放技术字段
- 定义端口:核心需要的存储、发送、查询等能力先抽象为接口,核心模块零框架依赖
- 写适配器:边缘层用 JPA/REST/Redis 实现端口
- 依赖朝内:编译依赖统一指向核心,框架被挡在边界外
同时提供检查清单:核心是否零框架 import?边界是否清晰?端口是否只暴露核心所需?业务逻辑能否脱离 DB/Web 纯单元测试?
适用边界与注意点
- 避免贫血模型:实体只有 getter/setter、逻辑全在 Service,会让 DDD 退化为 CRUD
- 拒绝过度拆分:小项目硬上全套 DDD,复杂度会超过收益
- 防范端口泄漏:适配器不能把技术异常或类型透传进核心
- 架构选型需结合团队规模与业务复杂度,落地时要参考官方文档和团队规范
使用场景
- 重构耦合系统:核心业务逻辑写在 Controller 和 DAO 里,改需求牵一发动全身,需要拆出独立领域层
- 隔离框架依赖:核心业务依赖 Spring/Express 和数据库,换框架成本高,需要把领域逻辑与技术细节解耦
- 搭建测试体系:业务规则无法写纯单元测试,每次都要启动整个应用容器,需要建立不依赖外部环境的测试
- 排查架构腐化:多个模块共享可变实体,改一个模块影响其他模块,需要按限界上下文重新划分边界
适合人员
- 后端开发工程师,面对业务逻辑散落在控制器和数据库层的旧系统,希望按领域驱动重构代码结构
- 架构师或技术负责人,需要在新项目中落地六边形架构,隔离核心业务与外部框架的依赖关系
- 测试开发工程师,想要为核心业务规则编写不启动框架的纯单元测试,提升测试执行速度
- 技术负责人,发现多个限界上下文共享可变实体导致修改风险扩散,需要重新划分领域边界