什么是CleanDDD(整洁领域驱动设计)
简介
领域驱动设计(Domain-Driven Design,简称DDD)是由Eric Evans在2003年提出的一种软件开发方法论。由于其缺乏具体的实现细节,开发者在实际的项目中往往难以落地。
CleanDDD 基于DDD的核心思想,从保障系统可维护性的第一性原理出发,移除了不必要的复杂性,组织出了一套清晰且易于实践的领域驱动设计方法论。
CleanDDD是一种价值观
我们认为,软件设计行为本质上是一个决策过程,而决策的底层,是依赖价值取向的,CleanDDD 的基石同样也构建在价值观之上。
因此我们定义,CleanDDD是一种价值观,这种价值观认为,“保持聚合边界明确是最重要的事”。
CleanDDD的核心原则
基于上述价值观,CleanDDD 提炼出了以下核心原则:
- 明确聚合边界: 聚合是领域模型的基本构建块,聚合之间应保持清晰的边界,不允许跨聚合的直接引用。
- 明确命令边界: 聚合应该具备独立满足业务需求的能力,一个命令仅允许操作单一聚合。
- 明确查询边界: 查询操作应与命令操作分离,不允许跨聚合的Join查询。
适用场景
CleanDDD 适用于以下场景:
- 复杂业务系统:业务规则复杂且频繁变化的系统
- 长期维护项目:需要持续迭代和扩展的系统
- 团队协作开发:多个团队协同开发的大型项目
- 微服务架构:需要清晰划分服务边界的系统
不适用于以下场景:
- 简单CRUD应用:业务逻辑简单,变化不频繁的系统
- 短生命周期项目:开发周期短,后续维护成本低的系统
- 小型个人项目:单人开发,业务复杂度低的系统