DDD领域设计的相关概念简述

1 什么是DDD

领域驱动设计,即Domain Driven Design(DDD)。

  • DDD是一套完整而系统的设计理论与方法,使得你的设计思路能够更加清晰,设计过程更加规范。
  • DDD 善于处理与领域相关的拥有高复杂度业务的产品开发

总之,DDD是专门为解决复杂性而诞生一套完整的理论方法。

DDD落地实现离不开Clean架构、六边形架构、CQRS、Event Source等思想。

2 DDD相关概念

  • 领域:用来限定业务边界和范围
  • 子域:领域进一步划分就是子域
  • 核心域:核心域应该就是公司的主要业务,简单来说就是公司最盈利的业务。
  • 通用域:见明知意,就是不管什么业务,都会涉及到比较通用的范畴,例如登录、授权、网关等。随着业务的发展也可能发展成为核心域。
  • 支撑域:支撑业务系统正常运行的业务,但是不处于核心地位。优先级较低,当然随着业务的发展也可能发展成为核心域;例如:物流对于淘宝来说一开始就是支撑域,后来发展成为了核心域
  • 通用语言:在事件风暴过程中,通过团队交流达成共识的,能够简单、清晰、准确描述业务涵义和规则的语言
  • 限界上下文:通用语言和领域对象,提供的上下文环境,保证在领域之内的一些术语、业务相关对象等(通用语言)只有唯一一个确切的含义。领域边界就是通过限界上下文来定义的,是划分微服务的重要依据。
  • 聚合:由业务和逻辑紧密关联的实体和值对象组合而成的。聚合是数据修改和持久化的基本单元,每一个聚合对应一个仓储,实现数据的持久化特点:高内聚、低耦合,它是领域模型中最底层的边界,可以作为拆分微服务的最小单位。
  • 聚合根:如果把聚合比作组织,聚合根则是组织的负责人,聚合根也叫做根实体,它不仅仅是实体,还是聚合的管理者。
  • 实体:有 ID 标识,通过 ID 判断相等性,ID 在聚合内唯一即可。
  • 值对象:无 ID,不可变,无生命周期,用完即扔。
  • 领域事件:领域事件是领域模型中非常重要的一部分,用来表示领域中发生的事件。一个领域事件将导致进一步的业务操作,在实现业务解耦的同时,还有助于形成完整的业务闭环,可以通过event,mq等实现,达到最终一致性,和解耦目的。
    image

跨多个实体的业务逻辑通过领域服务来实现;
跨多个聚合的业务逻辑通过应用服务来实现;

posted @ 2024-12-25 15:43  似梦亦非梦  阅读(44)  评论(0编辑  收藏  举报