DDD 抽象概念清晰定义

战略建模

  • 限界上下文
    • 映射方式:更详细的描述请看<实现领域驱动设计> 第3章,80 页
      • 合作关系(Partnership):两个上下文紧密合作的关系,一荣俱荣,一损俱损。
      • 共享内核(Shared Kernel):两个上下文依赖部分共享的模型。
      • 客户方-供应方开发(Customer-Supplier Development):上下文之间有组织的上下游依赖。
      • 遵奉者(Conformist):下游上下文只能盲目依赖上游上下文。
      • 防腐层(Anticorruption Layer):一个上下文通过一些适配和转换与另一个上下文交互。
        • https://docs.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer
        • http://wiki.c2.com/?AnticorruptionLayer
      • 开放主机服务(Open Host Service):定义一种协议来让其他上下文来对本上下文进行访问。
      • 发布语言(Published Language):通常与OHS一起使用,用于定义开放主机的协议。
      • 大泥球(Big Ball of Mud):混杂在一起的上下文关系,边界不清晰。
      • 另谋他路(SeparateWay):两个完全没有任何联系的上下文。

战术建模

  • 基本概念
    • 实体: Entity
      • 定义: DDD 抽象概念清晰定义_第1张图片
    • 值对象: Value Object
      • 定义: 在这里插入图片描述
    • 聚合: Aggregate
      • 定义:
        • 包含 一个或多个 [实体,值对象] 的事务边界
          在这里插入图片描述
      • 例子
        • 一个删除订单操作,会把订单和相关订单项删除.
          DDD 抽象概念清晰定义_第2张图片
    • 聚合根: Aggregate Root
      • 定义
      • 聚合只能通过聚合根向外暴露功能,即只能通过聚合根这个类的方法,对外提供聚合内其它类的功能.
        在这里插入图片描述
    • 领域服务: Domain Service
      • 定义DDD 抽象概念清晰定义_第3张图片
      • 作用
        • 跨聚合的操作,应放在领域服务
        • 当某个操作不适合放在 聚合 或 值对象时
          在这里插入图片描述
    • 应用服务: 应用程序,Application Service
      • 定义
        在这里插入图片描述
    • 资源库: 仓储,Repository
      • 定义
        • Repository is a storage repository for resources and shields the underlying persistence technology from the outside.
  • 其它概念
    • 领域模型
      • 定义
        在这里插入图片描述
    • Unit Of Work: uow
      • 定义
        • https://martinfowler.com/eaaCatalog/unitOfWork.html
        • https://www.codeproject.com/Articles/581487/Unit-of-Work-Design-PatternDDD 抽象概念清晰定义_第4张图片
      • 场景
        • The unit of work class serves one purpose: to make sure that when you use multiple repositories, they share a single database context.
    • 防腐层(ACL)
      • 作用: 将子域内的模型与子域外的模型进行转换,保证子域内的模型不被外部腐蚀

=====================================================
figure 1: 多子域.子域间的上下文映射,可通过防腐层(ACL)等映射方式.DDD 抽象概念清晰定义_第5张图片
figure 2: 单个子域,六边形架构(实战中,清晰架构表达得更好一些)DDD 抽象概念清晰定义_第6张图片
分层调用顺序
DDD 抽象概念清晰定义_第7张图片

推荐阅读

https://www.mirkosertic.de/blog/2013/04/domain-driven-design-example/
https://docs.axoniq.io/reference-guide/architecture-overview/ddd-cqrs-concepts
https://iopscience.iop.org/article/10.1088/1742-6596/1168/5/052028/meta

你可能感兴趣的:(5.后端)