首页 > 其他分享 >DDD相关术语总结

DDD相关术语总结

时间:2023-02-01 01:44:19浏览次数:36  
标签:总结 术语 聚合 对象 Object 子域 领域 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

  

  

 

 

 

 

 

 

 

 

 

    

  

标签:总结,术语,聚合,对象,Object,子域,领域,DDD
From: https://www.cnblogs.com/CNLayton/p/17081297.html

相关文章

  • 2022-2023 ICPC Asia East - Shenyang Regional Contest - 校内模拟总结
    我菜死了A显然重叠部分积分\(\frac{1}{3}\),前面的积分累加就行。仔细思考题目,主要是好久没做题了。B不会,神秘题,咕咕咕C随便什么做法都能过D???E树形背包后容斥,套......
  • MySQL之MVCC总结理解
    前置知识涉及到的几个概念:隐藏字段,undolog,readview(每个表中的)隐藏字段:最后修改记录的事务id,回滚指针undolog:在插入/更新数据的时候记录回滚日志当前读:读取的是记......
  • 2023第一个月总结
    对现有工作的不满意,发现身边人逐渐被生活改变,成为生活的累赘。工作的螺丝钉,机械且重复的活着,毫无新意。那我呢?对较好收入的屈服?不,我不想被生活摒弃,成为一颗螺丝钉。但我......
  • 工作总结及思考
    今天是2023年1月31日,兔年的第一天。一、工作内容:1.开发技术政策方面:针对主任对开发技术政策提出的内容进行了修改,发现自己没有剩余油挖潜的能力,无法有理有据地对剩余油及......
  • MySQL查询不区分大小写的问题总结
    MySQL查询不区分大小写问题1.问题描述最近,笔者在开发FleaAuth模块的过程中,准备验证以注册的账号huazie进行登录的场景,结果以HUAZIE成功登录,而数据库中存储的账号是hua......
  • mydumper学习总结
    0简介mydumper是一款社区开源的逻辑备份工具。该工具主要由C语言编写,目前由MySQL、Facebook等公司人员开发维护。mydumper  负责导出MySQL数据库的一致备份m......
  • 有关类型判断的总结
    1.判断是否为(String)类型isString=o=>Object.prototype.toString.call(o)==='[objectString]'2.判断是否为(Number)类型isNumber=o=>Object.prototype.toString.cal......
  • JRE和JDK总结
    一、JDK是什么?有哪些内容组成?JDK是Java开发工具包1.JVM虚拟机:Java程序运行的地方2.核心类库:Java写好的东西,可以直接调用3.开发工具:javac(编译工具)、jav......
  • mysql查询sql总结
    连表查询一文搞定MySQL多表查询中的表连接(join)SELECT a.id, b.server_idfrom release_recordasa JOINrelease_detailsasb ona.id=b.release_id解析:......
  • Linux操作命令大全总结
    系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i......