什么是领域驱动设计

DDD是一套系统设计的方法论。它可以使得设计思路更加清晰,设计过程更加规范

名词解释

领域

这个边界内要解决的业务问题域。例如:电商领域

子域

领域划分出来的多个领域。例如:电商领域中的商品域

核心域

决定产品和公司竞争力的子域就是核心域。例如:电商领域中的商品域

通用域

没有太多个性化诉求,可以同时被复用的子域就是通用域。例如:权限中心

支撑域

没有太多个性化需求,具有企业特性,但不具备通用性。例如:数据字典

限界上下文

定义领域的边界。例如:商品在销售阶段叫商品,在运输阶段叫货物

实体

业务行为的对象,具有完整生命周期。例如:电商领域中的订单、客户

值对象

属性集合,对实体的状态和特征进行描述。例如:人员收货地址

聚合

由业务和逻辑紧密关联的实体和值对象组成。一般聚合是持久化的单元。例如:人员聚合、商品聚合

聚合根

一种实体,聚合的管理者,拥有实体的属性和业务行为,实现自身的业务逻辑。例如:客户聚合中的客户

防腐层

将远程调用进行收口并将外域对象转换为本域对象。可以考虑适配器模式

设计过程

战略设计

  1. 根据事件风暴梳理业务场景和参与对象。产出:用例图、业务流程图
  2. 根据用例划分边界并进行聚合。产出:业务架构图、应用架构图、数据架构图、技术架构图
  3. 根据用例找出实体。产出:类图、er图
  4. 梳理每个业务流程的逻辑和调用关系。产出:时序图

    战术设计