用途:本指南用于领域驱动设计(DDD)中的领域建模,帮助在实现值对象、实体、聚合与领域服务时做出合理设计。原则与具体编程语言无关,示例代码使用 TypeScript,概念可迁移到其他语言。
主要能力:
- 值对象:无标识符、不可变、自包含,仅凭属性判断同一性;示例 Money 通过私有构造与静态工厂保证不变量,用 Either 返回校验与运算错误,提供 add、subtract、equals 等操作。
- 实体与聚合:实体具有标识符、生命周期,状态随时间变化;聚合是事务一致性单位,由聚合根与子实体、值对象组成,外部只能通过聚合根访问。示例 Order 通过 create、addOrderItem、confirm 等方法维护状态与不变量。
- 领域服务:跨多个实体或值对象的操作放在领域服务中实现,如 BankAccountTransfer.transfer 处理转账,也可定义为全局函数;类名与方法名应对应统一语言。
使用方式:在领域建模、实体设计、聚合边界决定、值对象实现时参考本指南。相关技能建议一并阅读:aggregate-design(聚合设计规则)、domain-model-first(测试优先实现构建块)、parse-dont-validate(类型层级的值对象设计)、domain-primitives-and-always-valid(领域原语与智能构造器)。
适用场景:需要以 DDD 方式组织领域模型的业务系统开发。
限制:资料未提供具体安装命令、运行环境、收费方式或平台支持信息;示例仅用于说明概念,未给出完整可运行工程配置。