DDD概念理解

news/2025/2/24 12:52:58

1、统一语言:通过团队交流、达成共识的、能够准确传递业务规则的、简单:语音
特点:通用、简单、无歧义
价值:解决了沟通障碍问题,使领域专家和开发人员协同合作

2、领域模型:把通用语言表达成软件模型
特点:综合了系统分析和设计,语言、模型、代码三者紧密绑定,可以通过UML类图来展示

3、领域:软件系统要解决实际问题(业务)的集合
解决方案空间:如何实现软件以解决业务挑战

4、子领域
核心域:业务系统核心价值所在,支持子领域,通用子领域
例子:电商领域
核心领域:销售子领域,通用领域:日志子领域,支持领域:物流子领域

5、限界上下文
限界:一个界限,具体某个范围---领域模型的边界
本质:保证模型概念的清晰和无歧义,避免有多重概念和职责的模型
例子:商品,在采购上下文中叫:补货商品,在售后上下文中叫:售后商品,都叫商品,但侧重点不同
梳理关系:上下文映射图:描述不同模型的联系点,上下文依赖

6、应用服务
表述应用行为
例子:购物车结算-》应用行为隐藏领域层的复杂性及内部实现

7、领域服务
表述领域行为:金额计算、支付、生成订单

8、聚合
领域对象的显示分组
封装业务,保证聚合内领域对象的数据一致性
难点:一致性维护
聚合内实现事物一致性,聚合外实现最终一致性

9、实体
实体=唯一身份表示+可变性(状态、属性)+行为(方法/领域事件、领域服务)
可变性:实体行为:订单行为:支付、发货、关闭
实体状态:已支付、已发货、已关闭

10、值对象
将一个值用对象的方式进行表达,表达一个固定不变的概念
例如:订单里的收货地址(订单里的收货地址没有状态不会变。可以冗余到订单表多个字段或一个字段用json存储)

11、仓库
领域模型与持久化存储之间的明确契约(封装ORM框架对领域暴漏持久化接口)

12、领域事件
实现方式:数据库持久化,通过中间件去分发

13、工厂
14、模块
对领域模型进行分解后相对独立的功能单元,由一系列高内聚的领域对象组成
设计:根据领域组织模块,基于通用语音(模块命名),模块内高内聚模块间低耦合
实现方式:同一个项目通过模块名称进行分离,通过多个项目进行分离

15架构风格
1、分层架构,2、六边形(端口和适配器),3、面相服务,4、RESTFul,5、命令查询分离CQRS,6、事件驱动
分层架构(4层架构):UI层,应用层,领域层,基础设施层
UI层:接收用户输入,输出JSON数据,Facade层:分离UI和应用层讲应用层数据映射成UI层适应的数据
应用层:定义实现业务功能,通过编排领域层接口实现功能
领域层:具体的业务能力,对应领域内的领域模型及代码实现,具体的功能
基础设施层:为其它层提供技术支持,包含持久化、序列化、消息、缓存

六边形架构:
端口:应用层(application)和领域层(Domain)通过端口(API调用)实现
适配器:针对不同的外部资源可以对接不同的适配器
保证内部逻辑的独立和外部依赖的解耦

SOA:注重服务的重用性,倾向于通过统一的服务总线将服务链接起来,形成服务试图,注重系统的整体性和统一性
微服务:以业务能力为中心,重视服务自治,每个服务都有独立的开发、部署环境、数据库、技术栈,强调敏捷和快速迭代

RESTFul:表述性状态转换,基于http,url,xml,json等标准格式,面向资源的架构模式

命令查询职责分离CQRS:读写分离,实体,接口都分离


 


http://www.niftyadmin.cn/n/5021120.html

相关文章

三维模型3DTile格式轻量化压缩处理效率提高的技术方浅析

三维模型3DTile格式轻量化压缩处理效率提高的技术方浅析 随着三维模型在各个领域的广泛应用,对于其格式的轻量化压缩处理和效率提高的需求也越发迫切。本文将介绍一些技术方法,帮助实现三维模型3DTile格式的轻量化压缩处理并提高处理效率。 首先&#x…

Android窗口层级(Window Type)分析

前言 Android的窗口Window分为三种类型: 应用Window,比如Activity、Dialog;子Window,比如PopupWindow;系统Window,比如Toast、系统状态栏、导航栏等等。 应用Window的Z-Ordered最低,就是在系…

Llama2-Chinese项目:1-项目介绍和模型推理

Atom-7B与Llama2间的关系:Atom-7B是基于Llama2进行中文预训练的开源大模型。为什么叫原子呢?因为原子生万物,Llama中文社区希望原子大模型未来可以成为构建AI世界的基础单位。目前社区发布了6个模型,如下所示: FlagAl…

安卓绘制原理之 MeasureCache优化了什么?

安卓绘制原理概览_油炸板蓝根的博客-CSDN博客 搜了一下,全网居然没有人提过 measureCache。 在前文中提到过,measure的时候,如果命中了 measureCache,会跳过 onMeasure,同时会设置 PFLAG3_MEASURE_NEEDED_BEFORE_LAYOU…

【云平台】遥感地信云平台收录

文章目录 国内1 航天宏图PIE-Engine2 商汤科技3 AI Earth4 EarthDataMiner国外结语国内 1 航天宏图PIE-Engine https://engine.piesat.cn/live-show-list 在这里插入图片描述 2 商汤科技 https://senseearth-cloud.com/map 3 AI Earth https://engine-aiearth.aliyun.com…

NFT,还是有未来的

非同质化代币(NFT)是一种基于区块链技术的数字资产,每一个都是独一无二的,并且可以代表现实世界中的任何唯一物品。而去中心化金融(DeFi)则提供了一种无需传统中介机构的金融系统,通过智能合约实…

aardio语言的通用数据表维护

import win.ui; /*DSG{{*/ var winform win.form(text"通用数据表维护";right617;bottom427;bgcolor15780518) winform.add( buttonAdd{cls"button";text"增加空行";left469;top40;right564;bottom80;flat1;z2}; buttonDel{cls"button&quo…

浅谈安科瑞DJSF1352-RN直流电表在沙特光伏发电设施中的应用

摘要:本文介绍了安科瑞DJSF1352-RN直流电表在沙特小型光伏发电设施直流侧的应用。主要用于光伏系统中的电流的计量,通过分流器对电路系统进行计量、通讯和控制等。 Abstract: This paper introduces the application of Acrel DJSF1352-RN DC energy me…