0%

以前端角度去学习并掌握DDD-领域驱动设计

Domain-Driven Design,DDD

我理解,DDD非常适合应用于偏业务的中大型复杂项目迭代中,尤其是电商之类的web项目。基于业务架构的系统设计,再完美匹配微服务架构,可以达到业务维度的高度统一。

我的学习沉淀

领域驱动设计

  1. 实例: 领域模型(抽象逻辑) :抽象/封装 数据+行为
  2. 方法:分治、抽象、知识(DDD提供了这样的知识手段,让我们知道如何抽象出限界上下文以及如何去分治)
  3. 限界上下文—>微服务边界划分,从业务维度做分治。上下文是领域的解系统,映射到团队,高效协作
    • 核心上下文
    • 支撑上下文
    • 通用上下文
  4. 防腐层ACL,适配&提供访问机制。
  5. 耦合程度控制在数据耦合层(数据库)

核心诉求:将业务架构映射到系统架构,想呼应。

微服务,则追求业务层面的复用

系统结构与组织结构 对齐,保持一致。

战术设计:数据+行为

  1. 实体 Entity (标识区分(唯一)的对象),有状态
  2. 值对象 Value Object (值描述的对象,不唯一)
  3. 聚合根 Aggregate,Aggregate Root,根实体
  4. 领域服务:Service,领域抽象功能点的实现。serverless处理流程,无状态
  5. 领域事件:通常是用来与其他聚合解耦的,采用观察者模式,一个聚合订阅另外一个聚合的事件。
  6. 库Repository:持久聚合,redis
  7. 工厂:创建聚合根 or 实体 or 值对象
  8. 模块:命名空间,概念隔离

在前端的业务域-如何实践DDD?

挖个坑