这篇文章主要还是表述清楚DDD相关的基础概念,因为DDD入门有一定的专业名词,还是得有个基本的了解。

先讲解下领域模型作用:

对软件需求进行设计,维持其内在逻辑的一致性

1)划分边界、也是一种高内聚、低耦合

2)所有逻辑都是内聚在对象内部的【包含行为和数据】

 

为什么需要DDD?

DDD从入门到精通:基础篇_领域模型

 

 

行业现状:

 DDD从入门到精通:基础篇_数据_02

贫血模型、充血模型

 DDD从入门到精通:基础篇_唯一标识_03

  • 领域模型就是DDD?
    • 其实领域模型早于DDD,很早就存在了,DDD算是一种实现方式而已
  • 战略设计、战术设计
  1. 领域、子域、界限上线文、上下文映射图这些是DDD的战略设计(帮助服务的关系设计、边界设计)
  2. 实体、值对象、聚合、CQRS、事件溯源、这些是DDD的战术设计(实现手段)。
  • 实体:具有唯一标识,实体可能会变化,比如订单状态,但它的唯一标识不会变化。有生命周期的概念(待支付、已支付、关闭等)
  • 值对象:特点是不变形。创建之后不会被改变。如果改变了,就是一个新的地址(打个比方),最多算是描述,仅仅只用来度量或描述的对象应该被设计为值对象
  • 聚合:关联对象的实体,将其作为一个单元来处理数据变更。
  • 聚合根:将多个实体和值对象聚合在一起的实体        
    • 仓储:领域对象都怎么构建出来的,它们存在哪里?这就不得不提到仓储(Repository)这个概念。在DDD理念里,仓储负责领域对象的存储,但仓储本身并没规定存储介质。也就是说仓储只负责定义领域对象的读/写协议,至于具体用内存、MySQL还是Oracle,它不关心。在《领域驱动设计:软件核心复杂性应对之道》中提到,一般只对聚合根建立仓储

示例:

    • DDD从入门到精通:基础篇_值对象_04

       

       

  • 通过战略设计,划分模块和服务的边界与依赖关系,对微服务架构的设计至关重要。

  •  
  • 六边形架构:不同的外部系统通过不同的适配器与领域模型交互,可以是HTTP/WEBSERVICE/RPC只需要为这些不同的访问接口提供不同的适配器就可以了
  • DDD从入门到精通:基础篇_值对象_05

     

     

待补充。。。