首页 > 其他分享 >DDD邻域驱动设计的基础理解

DDD邻域驱动设计的基础理解

时间:2023-07-17 16:55:30浏览次数:35  
标签:domain DTO 邻域 逻辑 entity application 驱动 infra DDD

ddd认为在application到infra层应该加一层domain

业务逻辑因该分为两大类,核心业务相似的,固定不变的应该放在domain这一层

application用来接入不同的应用场合会产生的不同业务逻辑

比如用户从网络端接入和从手机端接入,可能不同

比如用户登录网站和店家登录网站,逻辑也不同

application层存放不同场景对domain产生不同影响的业务逻辑

domain用于存放完全不会变动的逻辑

以前的infra存放第三方类库以及开源轮子,对其依赖

现在要求和infra尽可能解耦

应该是infra依赖已有的三层

已有的三层对其没有依赖关系

添加一层防腐层隔离

层与层之间数据传输的接口

prcscntation和application之间通过REST DTO传输或api,和用户接口的数据定义不能随意修改

application和infra传输的是entity,entity可能会发生变化,比如承载的状态,逻辑

所以有了两种不同的数据定义

entity的合法性也会在转化的时候封装在一起

domain层和数据库infra层之间的传输通过database DTO,也就是schema ,和rest DTO 一样不能被轻易修改。

domain做任何数据存取和读取的时候都需要介于entity和database dto之间做一个转换

dto定义在application层,划分出一个单独的dto包,方便其他包引用他,不会造成环形引用

domain层,repository,增删改查的仓库

repository会直接利用dao的interface来进行底层数据库访问

entity只会封装与自己本身相关个业务逻辑

entity:带有资源id以及有自己独立生命周期和状态表达的一种,比如订单,某一次银行转账

ValueObject:没有固定的id,没有生命周期,仅仅只有自己的一些属性,比如地址信息

entity和ValueObject是独立使用的

aggregates是一种超级权力的entity

访问entity通过aggregates来进行对其中entity数据操作

需要保证一个aggregates内部数据的一致性

标签:domain,DTO,邻域,逻辑,entity,application,驱动,infra,DDD
From: https://www.cnblogs.com/15078480385zyc/p/17560591.html

相关文章

  • mariaDB 驱动 java
    如何实现"MariaDB驱动Java"介绍MariaDB是一个开源的关系型数据库管理系统,它是MySQL的一个分支。在Java开发中,我们经常需要使用MariaDB来进行数据存储和查询。为了在Java中连接和操作MariaDB,我们需要使用MariaDB的驱动程序。本文将介绍如何使用Java来连接和操作MariaDB数据库。......
  • ubuntu20.04使用plx9054官方驱动 转载
    转载地址http://wuhongyi.cn/PKUXIADAQ/en/INSTALL.htmlInstallationofSoftwareInstallationforthissoftwareisrequriredbyCERNROOT6GCC>=4.8FFTW3OPENSSLTheoperatingsystemtestedbythisprogramincludesCentOS7/ScientificLinux7/......
  • nvidia驱动安装和升级
    安装GPU驱动之前建议升级内核,这里踩坑了!!!英伟达驱动官网下载链接:https://www.nvidia.cn/Download/index.aspx?lang=cn安装gpu驱动安装相关依赖,需安装kernel-headeryuminstallkernel-develgcc-y检查内核版本是否一致ls/boot|grepvmlinurpm-aq|grep......
  • 无需编写驱动直接访问设备\_I2C-Tools介绍 -5
    无需编写驱动直接访问设备_I2C-Tools介绍参考资料:Linux驱动程序:drivers/i2c/i2c-dev.cI2C-Tools-4.2:https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/AP3216C:gitclonehttps://e.coding.net/weidongshan/01_all_series_quickstart.git该GIT仓......
  • 设备驱动-10.中断子系统-4.1中断下半部使用-tasklet
    1中断下半部分引入引入中断下半部介绍了硬件中断和软件中断,硬件中断有gpio中断,网卡,外部电路IP引起的中断,而软件中断则有定时器,tasklet这些为软件中断。cpu会先处理硬件中断,然后处理软件中断。简单说可以认为内核中有一个数组softirq[],里面有很多项,某一项都应timer,某一项表示t......
  • 设备驱动-10.中断子系统-3.中断设备树表述与解析
    1.中断在设备树中的表述1中断控制器如图:GPIO1连接到GIC,GPIO2连接到GIC,所以GPIO1的父亲是GIC,GPIO2的父亲是GIC。假设GPIO1有32个中断源,但是它把其中的16个汇聚起来向GIC发出一个中断,把另外16个汇聚起来向GIC发出另一个中断。这就意味着GPIO1会用到GIC......
  • pwm驱动蜂鸣器
    IO口输出固定频率和占空比的PWM信号驱动蜂鸣器鸣响voidbuz(void){if(buz_flg){buz_cnt=200;//运行200ms0.2sPwm0Init(1000,500);//频率1k,占空比%50buz_flg=0;}if(buz_cnt==0){Pwm0Init(1000,0);//占空比为0,不......
  • Python与DDT数据驱动测试
    DDT当测试脚本相同而使用不同测试数据时,可采用数据驱动测试。需要%将DDT.py与运行的.py文件放到一个目录下安装:pipinstallddt DDT装饰符:@data读取单个值,使用@data(a,b)  a和b各运行一次用例读取列表或元组,@data([a,b])或@data((a,b)) 没有@unpack当成一个参数有当......
  • 【雕爷学编程】Arduino动手做(161)---16路PWM舵机驱动板2
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 防干扰/抗噪LCD液晶段码显示驱动芯片VK2C21A/AA SSOP28 适用于适用于单相电表,温控器LC
    概述:VK2C21是一个点阵式存储映射的LCD驱动器,可支持最大80点(20SEGx4COM)或者最大128点(16SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。QT951特点:•工作电压2.4-5.5V•......