首页 > 其他分享 >DDD基本概念说明

DDD基本概念说明

时间:2024-08-23 14:19:20浏览次数:10  
标签:聚合 实体 子域 业务 说明 事件 领域 基本概念 DDD

领域

从事一种专门活动或事业的范围、部类和部门

领域事件

事件构建和发布、事件数据持久化、事件总线、消息中间件、事件接收和处理

事件构建和发布

 基本属性{事件唯一标识、发生时间、时间类型、事件源}、业务属性{记录事件发生那一刻的业务数据,这些数据随事件传输到订阅方,
 以开展下一步的业务操作} 二者属性一起构成事件实体,事件实体依赖聚合根。领域事件发生后,事件中的业务数据不再修改,
 因此业务数据可以以序列化值对象的形式保存

子域

一个领域可以划分多个子域,每个子域对应一个更小的问题域或业务范围

核心域

决定产品和公司核心竞争力的子域是核心域,它是业务成功的主要因素和公司的核心竞争力

通用域

没有太多个性化的诉求,同时被多个子域使用的通用功能子域是通用域

支撑域

不包含决定产品和公司核心竞争力的功能,也不包含通用功能的子域,它就是支撑域

限界上下文

限界就是领域的边界,上下文则是语义环境。通过领域的限界上下文,则可以在统一的领域边界内的统一语言进行交流

实体

有唯一标识符,且标识符在历经各种状态变更后仍保持一致。对这些对象而言,重要的不是其属性,而是其延续性和标识,
对象的延续性和标识会跨越超出软件的生命周期,我们把这样的对象称为实体

值对象

通过对象属性值来识别的对象,它将多个相关属性组合为一个概念整体

聚合

聚合就是由业务和逻辑紧密关联的实体和值对象组合而成,聚合是数据修改和持久化的基本单元,每一个聚合
对应一个仓储,实现数据的持久化。聚合有一个聚合根和上下文边界

聚合根

如果聚合比作组织,那聚合根就是组织的负责人。聚合根拥有实体的属性和业务行为,实现自身的业务逻辑。
作为聚合的管理者,在聚合内部负责协调实体和值对象按照固定的业务规则协同完成共同的业务逻辑。它还是聚合对外的接口人
以聚合根ID关联的方式接受外部任务和请求,在上下文内实现聚合之间的业务协同

DDD分层架构

1、用户接口层
---负责向用户显示信息和解释用户指令,用户包括{用户、程序、自动化测试和批处理脚本等等}

2、应用层
---主要面向用例和流程相关的操作,理论上不应有业务规则或逻辑,位于领域层之上。应用服务是在应用层的,
它负责服务的组合、编排和转发,负责处理业务用例的执行顺序以及结果的拼装,以粗粒度的服务通过 API 网关
向前端发布。还有,应用服务还可以进行安全认证、权限校验、事务控制、发送或订阅领域事件等

3、领域层
---实现核心业务逻辑层,领域模型的业务逻辑主要是由实体和领域服务来实现的,其中实体会采用充血模型来
实现所有与之相关的业务功能。其次,实体和领域对象在实现业务逻辑上不是同级的,当领域中的某些功能,
单一实体(或者值对象)不能实现时,领域服务就会出马,它可以组合聚合内的多个实体(或者值对象),实现复杂的业务逻辑

4、基础层
---基础层是贯穿所有层的,它的作用就是为其它各层提供通用的技术和基础服务,包括第三方工具、驱动、消息中间件、
网关、文件、缓存以及数据库等。比较常见的功能还是提供数据库持久化

标签:聚合,实体,子域,业务,说明,事件,领域,基本概念,DDD
From: https://www.cnblogs.com/codechange/p/17831305.html

相关文章

  • K8S基本概念和组件
    特点便携性无论公有云、私有云、混合云还是多云架构都全面支持可扩展模块化、可插拔、可挂载、可组合,支持各种形式的扩展自修复自保持应用状态、自重启、自复制、自缩放,声明式语法组件etcd保存整个集群状态,充当数据库角色,只与APIServer通讯apiserve......
  • 软件项目管理文档汇总(规格说明书;详细设计;测试计划;验收报告)
      前言:在软件开发过程中,文档资料是非常关键的一部分,它们帮助团队成员理解项目需求、设计、实施、测试、验收等各个环节,确保项目的顺利进行。以下是各个阶段的文档资料概述:软件项目管理部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调......
  • 金融基础知识-投资相关业务基本概念
    1.金融及金融机构金融〔Finance〕货币资金的融通。我们通常说的都是广义的金融,是指有关货币、信用的所有经济关系和交易行为的总称。金融机构〔FinancialInstitutes〕专门从事货币、信用活动的中介组织。目前,我国金融机构按其地位和功能可分为三大类:中央银行,金融监管......
  • DDD精粹速读(一)
    1你需要知道的-战略设计DDD是一种软件设计和构建方法,其重点在于独立于数据持久化等技术问题,准确表达业务规则。不幸,DDD对新手来说极具挑战性,部分原因是它有许多独特的概念需要学习。本文我简要介绍这些重要的思想,以便你能自信继续你的DDD旅程。第一部分将侧重于与所有参......
  • Linux基础优化与常用软件包说明
    1.安装常用工具1.1CentOS(7)1.1.1是否联网pingqq.com1.1.2配置yum源(安装软件的软件仓库)默认情况下yum下载软件的时候是从随机地址下载。配置yum从国内下载(仅执行即可),修改yum配置指定统一下载地址(阿里云).修改yum下载软件的地址,改为阿里云#配置yum源##备份yum......
  • 基于ssm+vue.js的校园二手交易平台附带文章和源代码设计说明文档ppt
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我成功案例代码参考数据库参考源码获取前言......
  • 智能控制打气泵方案pcba的介绍说明
    在日常生活中,无论是汽车轮胎、自行车轮胎,还是各种球类等,保持合适的气压至关重要。这款车载打气泵方案不仅具备高精度控制和测量的特点还采用了高集成芯片设计。以下是一篇围绕打气泵PCBA(PrintedCircuitBoardAssembly,印刷电路板组件)的功能介绍、运行原理和应用场景:一、......
  • 深度学习:(一)基础解释,逻辑回归重点说明
    一、专业名词1.MachineLearning#机器学习(ML)2.DeepLearning#深度学习(DL)3.ConvolutionalNeuralNetworks#卷积神经网络(CNN)4.RecurrentNeuralNetwork#循环神经网络(RNN)5.LongShort-TermMemory#长短期记忆网络(LSTM)6.RectifiedLinearUnit#修正线性单元(R......
  • 详细说明:向量数据库Faiss的搭建与使用
    当然,Faiss(FacebookAISimilaritySearch)是一个用来高效地进行相似性搜索和密集向量聚类的库。它能够处理大型数据集,并且在GPU上的性能表现尤为出色。下面详细介绍Faiss的搭建与使用。1.搭建Faiss1.1安装依赖包首先,需要安装Faiss及其依赖包。可以使用如下命令:#如果使用......
  • 数据DML、DDL、DQL 、DCL说明
    目录 一、概述二、作用和说明三、用法示例1.DML2.DDL3.DQL4.DCL4.1授予权限4.1.1授予查询权限4.1.2授予所有权限4.1.3授予数据库级别的所有权限4.2撤销权限4.2.1撤销查询权限4.2.2撤销所有权限4.3授予角色权限4.3.1授予角色4.3.2撤销角色4.4......