领域驱动设计

news2024/12/29 1:33:56

DDD的代码结构_ronshi的博客-CSDN博客_ddd代码结构

DDD( 领域驱动设计)概念来源于2004年著名建模专家eric evans的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名:领域驱动设计—软件核心复杂性应对之道)。

DDD领域驱动设计,代码层次结构分为五层:adapter层、client层、app层、domain层、infrastructure层。如果是web服务,则包含adapter层。如果是业务服务,则可以去掉adapter层。

一、adapter层

adapter层主要是根据请求来源或类型进行适配,对app层的结果进行封装。

com.域名.项目名
├── adapter // 适配层模块
│ └── web // 网页端
│ └── mobile // 手机端
│ └── service // 服务端
二、client层

client层是对外提供的SDK,包含API的定义,以及数据传输对象。

com.域名.项目名
├── client // sdk模块
│ └── api // 网关实现层
│ └── dto // 数据接口
三、app层

app层是应用层,主要负责领域的整合和事务的管理,以及定时任务和消息的处理。

com.域名.项目名
├── app // 应用模块
│ └── executor // 执行层
│ └── query // 查询层
│ └── command // 命令层
│ └── consumer // 消息层
│ └── scheduler // 定时任务
四、domain层

domain层是领域层,主要是聚合的划分,包括聚合根、实体、值对象,以及领域能力和网关接口。

com.域名.项目名
├── domain // 领域层模块
│ └── model // 模型层
│ └── aggregate // 聚合层
│ └── entity // 实体层
│ └── valueobject // 值对象层
│ └── ability // 领域能力层
│ └── gateway // 网关接口层
五、infrastructure层

infrastructure层是基础设施层,采用了依赖倒置的原则,infrastructure层依赖于domain层,是领域层网关的具体实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/127989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全流量安全分析为IT运维提供高效保障(二)

前言 某高校信息中心老师反应,用户反馈教务系统有访问慢的情况,需要通过流量分析系统来了解系统的运行情况,此报告专门针对系统的性能数据做了分析。 前一章做了系统功能模块分析和整体流量分析,本章将进行异常分析、其他信息发…

【Linux】C语言缓冲区、缓冲区的实现

目录 一、C语言缓冲区 1.1 什么是缓冲区 1.2 缓冲区刷新 1.3 问题解释 1.4 stdout与stderr 1.5 perror的实现 二、模拟实现缓冲区 2.1 接口展示 2.2 函数实现 2.3 测试与源代码 一、C语言缓冲区 1.1 什么是缓冲区 缓冲区本质是一块C语言提供的内存空间&#xff0c…

边缘计算网关的应用有哪些

边缘计算网关(又叫物联网边缘计算网关),简称 Edge-Gateway,是一种可以在设备上运行本地计算、消息通信、数据缓存等功能的工业智能网关,可以在无需联网的情况实现设备的本地联动以及数据处理分析。 其具备接口丰富&…

无线蓝牙耳机什么牌子的好?好的无线蓝牙耳机推荐

无线蓝牙耳机因为携带更便捷,连接也越来越迅速而受到了不少用户的喜爱。在目前的耳机市场中,蓝牙耳机所占的比例越来越高,无线蓝牙耳机牌子也逐渐增多。那么,什么牌子的无线蓝牙耳机好?下面,我给大家盘点了…

迁移学习的 PyTorch 实现

什么是迁移学习?迁移学习是一种用于机器学习的技术,它使用预先训练好的模型来创建新的模型。这可以减少新创建模型所需的训练时间,因为它将继承以前学习的特性,这也将提高其准确性。但是迁移学习能带来多大的不同呢?为…

销售促单话术

销售过程中,销售不仅可以运用一些销售技巧来吸引客户的兴趣,也可以通过一些话术来获得客户的认同。 ​ 前言 销售过程中,销售不仅可以运用一些销售技巧来吸引客户的兴趣,也可以通过一些话术来获得客户的认同。很多销售一定遇到过…

【观察】全面赋能汽车行业数字化转型,亚马逊云科技的决心与诚意

毫无疑问,新一轮科技革命正在驱动整个汽车产业发生颠覆性的重大变革,传统的行业游戏规则也将在数字化时代被改写,而未来以电动化、智能化、互联化、共享化为特征的“新四化”,也正在成为整个汽车产业技术创新和商业模式进化的新方…

一文带你走进Python文件操作

Py文件操作 一: """ 1.找到这个文件,双击打开 ​ open(文件路径,mode"",encoding"") mode>读/写 encoding>文件的编码集是什么 ​文件路径:1.绝对路径d:Tools/Tool/python/a.txt 不安全2.相对路径相对于当前你的程序所在的文件夹…

回首来时路,未来皆坦途.......

不觉间,又到了年末,这一年似乎并没有什么特别的经历和值得一提的业绩,就是这样平淡的过着每一天,这大概就是普通人的人生吧..... 今年最大的改变就是跨行业成长,从事了售前工程师的工作,由于之前并没有相关…

20221230英语学习

今日单词 agreeable adj.惬意的,宜人的;可接受的,适合的;欣然同意的 gleam v.发微光;闪烁;隐约闪光;(在眼中)闪现;表露 hypothesis n.[复数hypotheses] 假…

CSS3 filter滤镜

filter 顾名思义就是过滤的意思 使用 filter属性为元素(常用于<img>)带来视觉的效果 filter描述none默认值&#xff0c;没有效果。blur(px)给图像设置模糊效果。默认是0&#xff1b;这个参数可设置css长度值&#xff0c;但不接受百分比值。brightness(%)调整图像的对比…

main 方法演示 spring 注解方式获取 bean

文章目录一、环境准备1、创建 Java 工程&#xff0c;引入 spring 相关 jar 包2、构建 path二、开发1、准备一个 User 类2、编写配置类 BeanConfig3、编写测试类 SpringTest4、验证结果本文章使用 JavaSE 方式&#xff0c;创建含有 main 方法的类&#xff0c;演示如何用简单的方…

用天翎低代码做办公协同软件,简单高效

编者按&#xff1a;在数字办公流行的现在&#xff0c;办公协同软件是企业必备。本文分析了办公协同软件的作用&#xff0c;并指出了基于低代码平台实现的办公协同软件可以很好地满足企业需求&#xff0c;最后进行了相关案例展示。 关键词&#xff1a;私有化部署&#xff0c;数…

从云原生实战峰会,透视2023年云原生发展趋势

CSDN&#xff1a;如果用两个关键词来总结 2022 年云原生的发展态势&#xff0c;您会有哪些评价&#xff1f;——繁荣和普惠。“繁荣”代表当前云原生的技术和产品蓬勃发展&#xff1b;“普惠”代表云原生技术从互联网走向金融、零售、政企等行业&#xff0c;普惠千行百业构建丰…

MySQL学习笔记(十五)行锁表锁间隙锁临键锁共享锁排他锁死锁

行锁表锁间隙锁临键锁共享锁排他锁死锁手动提交行锁&#xff08;记录锁Record Locks&#xff09;表锁间隙锁&#xff08;Gap Locks&#xff09;临键锁&#xff08;Next-Key Locks&#xff09;共享锁&#xff0c;排他锁死锁查看事物&#xff0c;锁的命令死锁的4个必要条件模拟死…

odoo学习之security, menu, tree, form

security 在ir.model.access.csv中 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink可以设置成 access_org_info,org.info,model_org_info,,1,1,1,1其中&#xff1a;access_org_info&#xff1a;access_为固定开头&#xff0c;org_info为模块…

Mol2Image: Improved Conditional Flow Models for Molecule to Image Synthesis

Mol2Image: 连接药物分子与细胞显微图像的条件流模型【2021CVPR】 Mol2Image: Improved Conditional Flow Models for Molecule to Image Synthesis paper&#xff1a;Improved Conditional Flow Models for Molecule to Image Synthesis | Papers With Code code&#xff1…

谷粒商城之高级篇(3)

2 商城业务 2.7 订单服务 2.7.22 创建业务交换机&队列 这里承接 知识补充篇 6 RabbitMQ 订单分布式主体逻辑 订单超时未支付触发订单过期状态修改与库存解锁 创建订单时消息会被发送至队列order.delay.queue&#xff0c;经过TTL的时间后消息会变成死信以order.release…

如何配置 SLO

前言 无论是对外提供 IaaS PaaS SaaS 的云公司&#xff0c;还是提供信息技术服务的乙方公司&#xff0c;亦或是金融 制造等各行各业的数据中心、运维部门&#xff0c;我们的一个非常重要的合同承诺或考核评估指标就是&#xff1a;SLA&#xff08;即&#xff1a;Service-Level …

蓝桥杯算法训练:FBI树(c++实现+图文详解)

文章目录FBI树C代码示例FBI树 题目要求 我们可以把由“0”和“1”组成的字符串分为三类&#xff1a;全“0”串称为B串&#xff0c;全“1”串称为I串&#xff0c;既含“0”又含“1”的串则称为F串。 FBI树是一种二叉树&#xff0c;它的结点类型也包括F结点&#xff0c;B结点和I…