DDD相关术语总结

简述

  在学习DDD的过程中,会碰见很多术语,以及英文缩写,不同资料中对概念的解释也有偏差,这里统一总结一下我对DDD相关的术语的个人理解

  相关术语包括:DTO、DO、Entity、BO、VO、PO、ACL、Repository规范、领域、子域、核心域、领域服务、聚合、聚合根、限界上下文、领域事件

DTO

  Data Transfer Object 数据传输对象,用于不同服务或服务不同分层之间的数据传输,属于DDD里的应用层。

DO

  Data Object 数据对象,其属性和数据库字段名一一对应,属于DDD里的Infrastructure层

  (有的资料是Domain Object 领域对象,这里Domain Object的概念更接近于下面的Entity和value object)

Entity

  实体类,业务的业务模型,它的字段和方法应该和业务语言保持一致,和持久化方式无关,属于DDD里的Domain层

 

BO

  Business Object 业务对象,和上面的Entity概念一致

PO

  Persistence Object 持久化对象,和上面DO概念一致

VO

  Value Object 值对象,用来描述Entity对象的状态,通常是数据的集合,没有行为

  (领域对象包含了业务对象值对象)

ACL

  Anti Corruption Layer 防腐层,指DDD中通过端口-适配器模式弄出来的中间层接口,用于隔离业务逻辑和第三方库的具体实现

Repository规范

  Repository规范是特殊的ACL,特指隔离的是业务和数据持久的具体实现

领域

  领域是一个比较大的概念

  在《实现领域驱动》书中,领域就是一个组织所做的事情以及其包含的一切

  个人理解为研究业务问题中的问题域,我们会在这个领域建立领域模型

子域

  领域可以进一步划分为子领域。我们把划分出来的多个子领域称为子域,每个子域对应一个更小的问题域或更小的业务范围

  举个例子,比如保险领域,我们可以把保险细分为承保、收付、再保以及理赔等子域

核心域

  决定产品和公司核心竞争力的子域,要投入最牛的程序员进行开发核心域

聚合

  聚合是领域对象的显式分组,旨在支持领域模型的行为和不变性,同时充当一致性和事务性边界

  个人理解:聚合就是实体对象和值对象的集合,本质就是建立了比对象粒度更大的边界,聚合了那些紧密联系的对象,形成了一个业务上的整体,外界通过聚合根作为交互的入口

聚合根

  聚合根是实体本身,拥有数据和行为,聚合根管理其所在的聚合,同时负责该聚合和外部的交互

领域服务

  当业务逻辑跨领域对象时,则需要领域服务整合两个领域对象的业务逻辑

  但要适度使用,过度的话业务逻辑都在领域服务里,那就又变成贫血模型了

限界上下文

  限界就是领域的边界,而上下文则是语义环境或者说业务的整个流程,通过领域的限界上下文,我们就可以在统一的领域边界内用统一的语言进行交流

  个人理解:限界上下文是用来划分领域对象的,每一个模型概念,包括它的属性和操作,在边界之内都具有特殊的含义,而领域模型需要准确的反映通用语言,所以就需要限界上下文来划分领域对象

领域事件

  领域事件就是在领域层发生的一些事件,如果发生某种事件后,会触发进一步的操作,那么这个事件很可能就是领域事件

  详细请看:https://juejin.cn/post/6938704749739016228

待补

  支持子域、通用子域、策略模式、领域之间的上下游

References

  https://juejin.cn/post/7024640082082529317#heading-4

  https://blog.csdn.net/muzizongheng/article/details/108871808

  https://mp.weixin.qq.com/s?__biz=MzAxNDEwNjk5OQ==&mid=2650406692&idx=1&sn=4a4ac4168299d8ca1905a4f457ae4c59&chksm=8395373cb4e2be2a2d066a5ea4e631fd6270e969ce61883b488f61c1ce33fbc0b362ec9cbf7b&scene=21#wechat_redirect

  https://zhuanlan.zhihu.com/p/359672528

  

  

 

 

 

 

 

 

 

 

 

    

  

posted @ 2023-02-01 01:34  艾尔夏尔-Layton  阅读(464)  评论(0编辑  收藏  举报