DDD 领域驱动设计的核心概念和原则是什么?

领域驱动设计(DDD)是一种基于模型驱动的软件设计方法,旨在通过建立领域模型来有效解决复杂的业务问题。以下是DDD的核心概念和原则:

核心概念

  • 领域(Domain):业务相关知识的集合,指特定范围或区域,用来确定范围和边界。

  • 子域(Sub Domain):领域的一部分,通常划分为核心域、支撑域和通用域。

    • 核心域(Core Domain):企业最关键的业务逻辑,决定了软件的定位和投资重心。
    • 支撑域(Support Domain):为了实现核心业务而开发的业务。
    • 通用域(General Domain):业界已有成熟方案的业务,如短信通知、邮件等。
  • 限界上下文(Bounded Context):有明确边界的上下文,用于限定领域模型的适用范围,确保概念的一致性。

  • 通用语言(Ubiquitous Language):在软件设计中,业务人员和开发人员使用无歧义的统一语言进行沟通,以确保业务模型与代码实现的一致性。

  • 实体(Entity):具有唯一标识的领域模型,可变,通过标识判断同一性。

  • 值对象(Value Object):不可变,通过值判断同一性的领域模型。

  • 聚合(Aggregate):一组生命周期强一致、修改规则强关联的实体和值对象的集合,表达统一的业务意义。

  • 聚合根(Aggregate Root):聚合中最核心的实体,其他实体和值对象从属于这个实体。

  • 仓储(Repository):以持久化领域模型为职责的类,屏蔽业务逻辑和持久化基础设施的差异。

  • 服务(Service):负责领域内业务规则实现的操作者。

原则

  • 通用语言:确保所有参与者使用统一语言进行沟通,避免歧义。

  • 聚焦核心域:专注于最关键的业务逻辑,决定软件定位和投资重心。

  • 协作共创:领域专家和技术专家共同建模,以确保模型准确反映业务需求。

  • 持续建模:模型需要随业务变化而被及时更新,以保持与实际业务的一致性12345