SuperAPI AI 工具集

domain-driven-design

设计与创作

查看项目

更新于 10-15 23:33

技能介绍

用途:为复杂业务领域建模,让代码贴近业务,通过开发者与领域专家共享的语言(通用语言)表达业务规则。适用于业务规则复杂、多团队负责不同业务区域、同一概念在不同上下文含义不同、领域知识为核心的长期项目;简单 CRUD、小于 200 行的小服务、团队无 DDD 经验且工期紧张时不建议使用。

主要能力与模式:通用语言(代码、文档、对话使用业务术语,如 Order.confirm() 而非 Record.process());限界上下文(模型有效的显式边界,同一词在不同上下文可有不同模型,如销售、库存、运输各自的 Product);实体(有持久身份、可变、按身份判等);值对象(完全由属性定义、不可变、自校验、按值判等,如 Money);聚合与聚合根(作为整体访问,只能通过根访问内部,如 Order 管理 OrderItem);领域事件(捕获重要领域发生,解耦副作用,如 OrderConfirmedEvent);仓储(抽象持久化,领域层只依赖接口,基础设施实现);领域服务(跨聚合的无状态业务逻辑)。避免贫血领域模型,业务行为应放在实体中。

使用方式:按决策树选择模式——复杂业务规则用聚合与实体;多团队用限界上下文;领域模型含技术术语则与领域专家共建通用语言;有生命周期与身份用实体;完全由属性定义用值对象;副作用用领域事件解耦;需持久化聚合定义仓储接口;逻辑跨聚合提取为领域服务;集成遗留或第三方系统用防腐层;长流程多聚合用 Saga/流程管理器。

限制与边界:聚合过大导致争用、过小失去不变量保护,应按业务事务而非数据设计;限界上下文是逻辑边界,不必然等于微服务边界;DDD 也适用于函数式代码;通用语言会随业务演进漂移,需定期与领域专家复核并更新代码。资料未提供安装命令、收费、平台或效果信息。