跳转至

什么是CleanDDD(整洁领域驱动设计)

简介

领域驱动设计(Domain-Driven Design,简称DDD)是由Eric Evans在2003年提出的一种软件开发方法论。由于其缺乏具体的实现细节,开发者在实际的项目中往往难以落地。

CleanDDD 基于DDD的核心思想,从保障系统可维护性的第一性原理出发,移除了不必要的复杂性,组织出了一套清晰且易于实践的领域驱动设计方法论。

CleanDDD是一种价值观

我们认为,软件设计行为本质上是一个决策过程,而决策的底层,是依赖价值取向的,CleanDDD 的基石同样也构建在价值观之上。

因此我们定义,CleanDDD是一种价值观,这种价值观认为,“保持聚合边界明确是最重要的事”

CleanDDD的核心原则

基于上述价值观,CleanDDD 提炼出了以下核心原则:

  1. 明确聚合边界: 聚合是领域模型的基本构建块,聚合之间应保持清晰的边界,不允许跨聚合的直接引用。
  2. 明确命令边界: 聚合应该具备独立满足业务需求的能力,一个命令仅允许操作单一聚合。
  3. 明确查询边界: 查询操作应与命令操作分离,不允许跨聚合的Join查询。

适用场景

CleanDDD 适用于以下场景:

  • 复杂业务系统:业务规则复杂且频繁变化的系统
  • 长期维护项目:需要持续迭代和扩展的系统
  • 团队协作开发:多个团队协同开发的大型项目
  • 微服务架构:需要清晰划分服务边界的系统

不适用于以下场景:

  • 简单CRUD应用:业务逻辑简单,变化不频繁的系统
  • 短生命周期项目:开发周期短,后续维护成本低的系统
  • 小型个人项目:单人开发,业务复杂度低的系统