DDD

2024/4/11 17:47:44

DDD之领域,子域,限界上下文

领域 从广义上来讲,领域即是一个组织所做的事情以及其中所包含的一切。一般来讲商业机构会确定一个市场,然后在这个市场中销售产品和服务。每个组织都有它自己的业务范围和做事方式,这个业务范围以及在其中所进行的活动就是领域。 子域 由…

DDD之工厂

工厂 工厂即是用来产生对象的地方,将创建复杂对象和聚合的职责分配给一个单独的对象。对于聚合来说,我们应该一次性创建整个聚合,并且确保它的不变条件得到满足。 在DDD中以下对象可以充当工厂 聚合根中的行为方法 例如这篇稳重中的《DDD之…

【DDD】学习笔记-实体定义

“实体(Entity)”这个词被我们广泛使用,甚至被我们过分使用。设计数据库时,我们用到实体,例如《数据模型资源手册》就说:“实体是一个重要的概念,企业希望建立和存储的信息都是关于实体的信息。…

使用函数式语言建立领域模型

领域模型代码 如果说敏捷软件开发主张面对面沟通,通过快速迭代的手段,让有价值的软件尽早面向市场,从而适应快速变化的需求。 那么DDD则为敏捷开发过程中的沟通形式,作出了进一步的补充。纵观DDD的所有环节,无一不是在…

5请求处理流程

产品代码都给你看了,可别再说不会DDD(五):请求处理流程 # 这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云(https://www.…

DDD中常提到的应用架构总结(六边形、洋葱、整洁、清晰)

目录一、引言二、EIC(Entity-Interface-Control) & EBI(Entity-Boundary-Interactor)三、端口和适配器架构Ports & Adapters Architecture(又称六边形架构Hexagonal Architecture)四、洋葱架构Onion Architecture五、整洁…

8应用服务与领域服务

本系列包含以下文章: DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务(本文)领域事件CQRS 案例项目介绍 # 既然DDD是“领域”驱动,那么我们便不能抛开业务而只讲技术&…

4代码工程结构

产品代码都给你看了,可别再说不会DDD(四):代码工程结构 # 这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云(https://www.…

端口和适配器架构——DDD好帮手

摘要 本文源自2018领域驱动设计中国峰会《领域驱动设计与演进式架构专题》的Session之一,是其博客版在实践领域驱动设计时,可以挑选一些方法互为参照,端口和适配器架构概念简单,容易掌握,适合作为实践领域驱动设计的辅…

DDD之领域服务与领域事件

领域服务 领域中的服务表示一个无状态的操作,它用于实现特定于某个领域的任务。这里我们要搞清楚什么样的操作需要实体,值对象,什么样的操作需要采用领域服务。 另外,领域服务不是应用服务,在应用服务中我们不需要处理…

DDD之如何合理设计一个聚合

聚合 聚合就是将那些一致性边界内的实体和值对象组合到一起。不同的人设计的聚合可大可小。一方面我们可能为了对象组合方便而将聚合设计的过大,另外一方面,我们设计的聚合又可能因为过于贫瘠而失去了保护真正不变条件的目的。 设计原则 不合理的设计…

DDD之通用语言

定义 在限界上下文之内的每种领域术语,词组或句子,都可以看做通用语言。它们在同一个上下文中具有唯一确定的含义,在限界上下文之外,它们可能表达不同的含义。所以,我们在确定通用语言时,需要保证它们的含…

DDD之实体与值对象区别

实体 当我们需要考虑一个对象的个性特性时,或者需要区分不同的对象时,我们引入实体这个领域概念,一个实体是一个唯一的东西。并且可以在相当长的一段时间内持续的变化,我们可以对实体进行多次的修改。但是尽管经历了多次的修改&a…

领域事件驱动(二)聚合与聚合根的了解

上一章对值对象以及实体进行了一些简单的讲解: 聚合 聚合:我们把一些关联性极强、生命周期一致的实体、值对象放到一个聚合里。 聚合有一个聚合根和上下文边界,这个边界根据业务单一职责和高内聚原则,定义了聚合内部应该包含哪…

[pdf]《软件方法》2024版部分公开-共196页

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 潘加宇《软件方法》2024版部分公开pdf文件,共196页,已上传CSDN资源。 也可到以下地址下载: http://www.umlchina.com/url/softmeth2024.html 如果…

DDD全网最通俗易懂讲解(三)

DDD代码模型 Interfaces(用户接口层):他主要存放用户接口层与前端交互,展现数据相关的代码。前端应用通过这一层的接口,向应用服务获取展现所需的数据。这一层主要用来处理用户发送restful请求,解析用户输入的配置文件&#xff0c…

项目终于用上了 DDD 领域驱动,太强了

在公司对支付业务、结算业务、资金业务使用DDD进行领域建模的两年,得到了许多好评,也面对过不少质疑,总体来说还是能收获不少,这对团队成员理解业务起着很大作用。近半年一直在研究DDD的落地实战,如今已修得阶段性成果…

你的医书是假的!批评付施威的《DDD诊所——聚合过大综合症》

DDD领域驱动设计批评文集 “软件方法建模师”不再考查基础题 《软件方法》各章合集 一、说在前面 这两天在“ Thoughtworks洞见”公众号上看到一篇付施威的《DDD诊所——聚合过大综合症》。 相对于DDD圈子各种各样错误百出的玄学文章,这篇《DDD诊所》已经算是想…

6聚合根与资源库 #

本系列包含以下文章: DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库(本文)实体与值对象应用服务与领域服务领域事件CQRS 案例项目介绍 # 既然DDD是“领域”驱动,那么我们便不能抛开业务而只讲技术&…

【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)

一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系) 前言介绍降低沟通成本问题:各自建立属于自己领域/层面的语言标准解决方案1:专业术语转换为接地气的话术解决方案2:用简单的案例和背景信息进行描…

领域驱动应用架构实践

一个合适的应用架构不仅能促使项目朝着好的方向发展,易于维护,也能指导团队成员有效协作。 DDD是站在领域的角度来驱动应用架构的落地,接下来将介绍一种落地方案。 架构分层 首先在架构层次方面,在遵循DDD的分层架构模式的同时&…

【DDD】学习笔记-代码模型的架构决策

代码模型属于软件架构的一部分,它是设计模型的进化与实现,体现出了代码模块(包)的结构层次。在架构视图中,代码模型甚至会作为其中的一个视图,通过它来展现模块的划分,并定义运行时实体与执行视…

【DDD】学习笔记-场景驱动设计与 DCI 模式

思维模式与设计方法 对象是强调行为协作的,但对象自身却是对概念的描述。一旦我们将现实世界映射为对象,由于行为需要正确地分配给各个对象,于是行为就被打散了,缺少了领域场景的连续性。场景驱动设计引入“分解任务”的方法&…

【DDD】学习笔记-数据分析模型

在 Eric Evans 提出领域驱动设计之前,对企业系统的分析设计多数采用数据模型驱动设计。如前所述,这种数据模型驱动设计就是站在数据的建模视角,逐步开展分析、设计与实现的建模过程。通过对数据的正确建模,设计人员就可以根据模型…

京东云开发者DDD妙文欣赏(2)报菜名和化繁为简的创新

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 京东云开发者原文链接:DDD落地实践-架构师眼中的餐厅>>,以下简称《餐厅》。 我截图时,阅读量有6044,在同类文章中已经算是热文了…

DDD概念理解

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

【DDD领域驱动篇】如何理解领域驱动设计?

如何理解领域驱动设计? ✔️典型解析✔️扩展知识仓库✔️DDD带来的好处✔️DDD 的不足 ✔️典型解析 领域动设计(Domain-Driven Design,DDD)是一种软件开发方法论,将业务领域作为软件设计的核心,以便更好地满足业务需求。 DDD认为&#xff…

如何选择UMLChina服务

服务口号:聚焦最后一公里 斐力庇第斯从马拉松跑回雅典报信,虽然已是满身血迹、精疲力尽,但他知道:没有出现在雅典人民面前,前面的路程都是白费。 学到的知识如果不能最终【用】于您自己的项目之中,也同样是…

小傅哥星球项目拆解,如何设计复杂的抽奖流程

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 大家好,我是技术UP主小傅哥。 我想做一个抽奖,但想让用户合理的别中奖。现在各个互联网产品场景中&…

【DDD】学习笔记-领域实现模型

实现模型与编码质量 领域设计模型体现了类的静态结构与动态协作,领域实现模型则进一步把领域知识与技术实现连接起来,但同时它必须守住二者之间的边界,保证业务与技术彼此隔离。这条边界线应由设计模型明确给出,其中的关键是遵循…

设计模式学习笔记 - 面向对象 - 8.实践:贫血模型和充血模型的原理及实践

1.Web开发常用的贫血MVC架构违背OOP吗? 前面我们依据讲过了面向对象四大特性、接口和抽象类、面向对象和面向过程编程风格,基于接口而非实现编程和多用组合少用继承设计思想。接下来,通过实战来学习如何将这些理论应用到实际的开发中。 大部…

DDD领域驱动设计-视频讲解+实战

目录 简介 解决的问题 过度耦合 现状 DDD的分层架构和构成要素 小结 分包应用 DDD领域驱动设计:实体、值对象、聚合根 DDD应用 战略建模 领域 限界上下文 需求分析 上下文映射图 战术建模——细化上下文 DDD工程实现 最终数据流向 简介 DDD 领域驱…

DDD系列 - 第4讲 从架构师的角度看待DDD - 一个关于拆解、微服务、面向对象的故事(二)

目录 第3次拆解 - 面向对象分析与设计3.1 交互入口实现层3.2 面向对象分析3.2.1 根据业务映射类3.2.2 对象持久化仓库3.2.3 自定义属性类3.2.4 类间的关联关系3.2.5 分包提升内聚、包内指定入口类降低耦合3.2.6 定义交互出口3.3 流程编排 & 业务编排3.4 交互出口实现层 &am…

【DDD】学习笔记-领域驱动设计对持久化的影响

资源库的实现 如何重用资源库的实现,以及如何隔离领域层与基础设施层的持久化实现机制,具体的实现还要取决于开发者对 ORM 框架的选择。Hibernate、MyBatis、jOOQ 或者 Spring Data JPA(当然也包括基于 .NET 的 Entity Framework、NHibernat…

【DDD】学习笔记-领域模型与结构范式

领域模型与建模范式 即使采用领域模型驱动设计,针对同一个领域获得的领域模型也会千差万别,除了因为设计能力、经验及对现实世界的理解不一致外,对模型产生根本影响的是建模范式(Modeling Paradigm)。 “范式&#x…

DDD系列 - 第1讲 DDD相关概念入门

目录一、引言二、 统一语言Ubiquitous Language三、 三个阶段(战略、战术、实现)阶段1:战略设计阶段阶段2:战术设计阶段阶段3:技术实现阶段四、限界上下文Bounded Context五、上下文映射Context Map防腐层Anti-Corrupt…

领域驱动设计理论实践

战略设计 战略设计是将“混沌”解构成“清晰”的过程,在该过程从开始到结束的历程之中,我们会划分出领域、界定通用语言范围、确定出系统限界上下文以及上下文之间的映射方式。 领域划分 战略设计在领域驱动设计中起着关键作用,因为其决定了…

DDD概念以及微服务划分

目录 DDD简介: DDD与微服务的区别: DDD核心概念: 如何划分微服务边界: DDD简介: DDD 是 Domain-Driven Design 的缩写,称为领域驱动设计。它是为了解决划分业务边界的问题,是一种架构模式,也是一种划分…

快速理解DDD领域驱动设计架构思想-基础篇 | 京东物流技术团队

1 前言 本文与大家一起学习并介绍领域驱动设计(Domain Drive Design) 简称DDD,以及为什么我们需要领域驱动设计,它有哪些优缺点,尽量用一些通俗易懂文字来描述讲解领域驱动设计,本篇并不会从深层大论述讲解落地实现,这…

领域驱动设计——DDD的整体设计流程

一、领域驱动设计的应用 在前面学习分析了DDD的内容和各种技术,就可以在实际应用这种设计方式了。DDD倾向于对业务领域抽象的分离,可以更好的在应用层就展开各种领域设计,由表及里,由外到内。更为重要的是,DDD的模型是…

DDD贫血模型、充血模型

贫血模型 贫血模型是一种软件开发中的设计模式,它指的是将数据和业务逻辑分离的一种设计模式,其中数据和领域模型是独立于业务逻辑的。在贫血模型中,数据由数据对象存储,而业务逻辑由服务对象处理。这种设计模式的优点是使代码更…

StarUML和张学友-UMLChina建模知识竞赛第4赛季第19轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 第18轮尚无人得分,答过的同学可以再答>> 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可…

整洁架构能有多整洁?

前段时间,我将一个中大型后端项目顺利地从Spring Boot 2.5 迁移到了Spring Boot 3,整个过程仅花了一天左右时间,在小酌庆祝之余,我开始思考此次迁移之所以能够顺利进行的原因,此时一个概念立即闪现脑海——整洁架构。 …

DDD领域驱动设计系列-原理篇-战术设计

概述 上篇战略设计产出了领域及问题域领域模型;详见:DDD领域驱动设计系列-原理篇-战略设计-CSDN博客 战术设计篇聚焦如何落地,包含实际解决方案模型落地,架构分层(Clean,CQRS),Rep…

DDD系列 - 第8讲 仓库Repository - JPA篇(二)

目录 三、领域层定义仓库Repository接口3.1 ID生成策略3.2 内置方法的使用3.3 关于Specification的使用3.4 通过方法名定义查询3.5 自定义SQL(跨聚合)3.5.1 @NameQuery & @NamedNativeQuery3.5.2 @Query3.5.3 @Query.nativeQuery3.5.4 @Query & @Modifying3.5.5 @Que…

【DDD】学习笔记-数据模型与对象模型

在建立数据设计模型时,我们需要注意表设计与类设计之间的差别,这事实上是数据模型与对象模型之间的差别。 数据模型与对象模型 我们首先来分析在设计时对冗余的考虑。前面在讲解数据分析模型时就提及,在确定数据项模型时,需要遵…

领域驱动设计:基于DDD的微服务设计实例

文章目录 项目基本信息战略设计战术设计后续的工作 用一个项目来了解 DDD 的战略设计和战术设计,走一遍从领域建模到微服务设计的全过程,一起掌握 DDD 的主要设计流程和关键 点。 项目基本信息 项目的目标是实现在线请假和考勤管理。功能描述如下&…

DDD聚合、领域服务、应用服务

一、聚合(Aggregate) 在DDD中,聚合被视为设计和实现领域模型的基础,它提供了一种清晰的方式来组织领域对象,并定义了领域对象之间的关系和行为。 简单来说就是为了实现“高内聚,低耦合”。 高内聚 高内…

【领域驱动设计】聚合

从战术设计上,DDD 最值得借鉴的就是聚合根 什么是聚合 将实体和值对象在一致性边界之内组合聚合 这里的一致性包括 1、业务概念的完整性 2、业务规则的一致性:多个实体需要在一次操作中保持某种一致性(修改 A,同步必须修改 B&a…

7实体与值对象 #

本系列包含以下文章: DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象(本文)应用服务与领域服务领域事件CQRS 案例项目介绍 # 既然DDD是“领域”驱动,那么我们便不能抛开业务而只讲技术&…

实例——领域驱动设计DDD

简单总结下在项目中DDD的应用过程。 基于 DDD 的微服务设计通常采用事件风暴方法。 通过事件风暴完成领域模型设计,划分出微服务逻辑边界和物理边界,定义领域模型中的领域对象,指导微服务设计和开发。 这里的重点,是根据领域划分…

领域驱动设计:DDD重构中台业务模型

文章目录 如何避免重复造轮子?如何构建中台业务模型? 如何避免重复造轮子? 要避免重复建设,就要理解中台的理念和思想。“中台是企业级能力复用平台”,“复用”用白话说就是重复使用,就是要避免重复造轮子…

领域驱动设计:微服务的设计原则和演进策略

文章目录 微服务的演进策略不同场景下的领域建模策略DDD 使用的误区微服务设计原则微服务拆分需要考虑哪些因素? 微服务的演进策略 在从单体向微服务演进时,演进策略大体分为两种:绞杀者策略和修缮者策略。 1. 绞杀者策略 绞杀者策略是一种…

DDD中如何识别子域、实体、值对象和聚合

在使用DDD时,会碰到各种各样晦涩难懂的概念,让人抓狂。今天笔者就以电商平台中的产品管理和订单处理两个具体领域来说明标题所述的子域、实体、值对象和聚合等相关概念。 产品管理: 子域: 产品管理可以被看作整个电商平台的核心…

事件风暴-协作探索复杂业务领域

本文是个人理解,并不一定准确,仅供参考,想吐槽也可留言 事件风暴可以用在业务分析和技术分析,如果你做的业务已经有人做过了,那肯定会有这方面的专家,请来或者模仿去做一个公司特色的产品,事件风…

【DDD】学习笔记-上下文映射的通信集成模式

无论采用何种设计,限界上下文之间的协作都是不可避免的,应用边界的上下文映射模式会以更加积极的态度来应对这种不可避免的协作;从设计的角度来讲,就是不遗余力地降低限界上下文之间的耦合关系。防腐层与开放主机服务的目的正是如…

[答疑]角色和状态的区别

DDD领域驱动设计批评文集 “软件方法建模师”不再考查基础题 《软件方法》各章合集 jeri 2023-9-10 13:09 设备关联角色,设备也有子类(车辆/设备),按书中的解释,设备是一个抽象类,角色类名像是带了状态…

10CQRS

本系列包含以下文章: DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务领域事件CQRS(本文) 案例项目介绍 # 既然DDD是“领域”驱动,那么我们便不能抛开业务而只讲技术&…

如何利用基于充血模型的DDD开发一个虚拟钱包系统?

上篇文章总结了一些理论知识的铺垫性讲解,讲到了两种开发模式,基于贫血模型的传统开发模式,以及基于充血模型的 DDD 开发模式。今天,我们正式进入实战环节,看如何分别用这两种开发模式,设计实现一个钱包系统…

基于grpc从零开始搭建一个准生产分布式应用(6) - 06 - MapStruct常见问题汇总

1、Unknown property "discount" in result type TestMixBO. Did you mean "null"?可能有以种原因: 属性名写错了;maven中的编译插件中lombok的配置配置在了mapstrut之后,导致lombok注解没有执行; 2、Unkno…

DDD系列 - 第3讲 从架构师的角度看待DDD - 一个关于拆解、微服务、面向对象的故事(一)

目录 前言:从一个故事开始第1次拆解 - 子系统第2次拆解 - 微服务2.1 业务维度2.2 组织维度2.3 技术维度2.4 微服务间的交互2.5 微服务拆解的合理性前言:从一个故事开始 这篇文章的开始,我先给大家讲一个采用面向对象的微服务架构的项目的落地的故事,记住这几个关键字: 拆…

京东云开发者:DDD 学习与感悟 —— 向屎山冲锋

原文地址:https://mp.weixin.qq.com/s/Hvq1ttBopbxypatVcKcLiA 软件系统是通过软件开发来解决某一个业务领域或问题单元而产生的一个交付物。而通过软件设计可以帮助我们开发出更加健壮的软件系统。因此,软件设计是从业务领域到软件开发之间的桥梁。而DDD是软件设计…

【DDD】学习笔记-限界上下文对架构的影响

通信边界对架构的影响 限界上下文的通信边界会对系统的架构产生直接的影响,在此之前,我们需要理清几个和边界有关的概念。如前所述,我提出了限界上下文的通信边界的概念,并将其分为进程内通信与进程间通信两种方式。在 Toby Clem…

《软件方法》2023版第1章(10)应用UML的建模工作流-大图

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.1 概念 我用类图表示建模工作流相关概念如图1-16。 图1-16 建模工作流相关概念 图1-16左侧灰色部分定义了“游戏规则”,右侧则是在“游戏规…

DDD 领域驱动设计

领域驱动设计(Domain Driven Design)是大型业务系统最常用的方法论,是现有微服务业务拆分的一个基础理论,是架构设计中很重要的一个方法论。但是,领域驱动设计又是一个比较庞大复杂的理论,包含实体、仓库、…

DDD领域驱动设计

一、背景 在 DDD领域驱动设计中, DDD架构师负责定义出领域模型,而领域专家负责将领域模型转换为具体的软件系统。 对于传统的面向对象(OOP)架构来说,为了适应新的软件技术和新的业务需求,系统通常需要重新…

DDD设计思想及例子

DDD设计思想 软件核心复杂性,本质要对业务拆分的复杂性进行梳理 架构思想(不要一直重构了) 之前架构三层架构(MVC)controller,service,dao DDD架构四层架构风格: 用户接口层 User Interface: 负责与用户进行交互&#…

[图解]DDD领域驱动设计伪创新-通用语言06

82 00:03:24,860 --> 00:03:28,880 所以为什么很多DDD都是在什么 83 00:03:29,290 --> 00:03:32,310 很多这种通俗易懂的领域 84 00:03:33,710 --> 00:03:36,060 生活上的互联网这种 85 00:03:36,710 --> 00:03:38,982 很多DDD什么的大行其道 86 00:03:38,982 …

[答疑]经营困难时期谈建模和伪创新-长点心和长点良心

leonll 2022-11-26 9:53 我们今年真是太难了……(此处删除若干字)……去年底就想着邀请您来给我们讲课,现在也没有实行。我想再和我们老大提,您觉得怎么说个关键理由,这样的形势合适引进UML开发流程? UML…

项目架构MVC,DDD学习

写在前面 本文一起看下项目架构DDD,MVC相关的内容。 1:MVC 不管我们做什么项目,自己想想其实只是做了三件事,如下: 其实,这三件事完全在一个类中做完也可以可以正常把项目完成的,就像下面这…

领域事件模型(四) CQRS模式

CQRS 将系统中的操作分为两类,即「命令」(Command) 与「查询」(Query)。命令则是对会引起数据发生变化操作的总称,即我们常说的新增,更新,删除这些操作,都是命令。 而查询则和字面意思一样,即不 会对数据产…

Java开发必读--初识微服务一定要阅读这篇文章

原文转自一线互联网资深架构师,微服务布道师小马哥的原创文章,始发与小马哥公众号。 微服务是什么? 微服务是一种细粒度(Fine-Grain)的SOA 或许在座的高朋了解过其概念。个人认为,与其说微服务是一种技术…

DDD实践思考

DDD(domain driven design) 领域驱动设计强调技术专家和业务专家,通过统一的语言来完成领域的建模,帮助技术侧和业务侧形 成一套统一的语言. DDD就是以领域为入口,来解决产品设计,研发的思想。 什么场景适合使用DDD 并不是所有场景…

从MVC到DDD,该如何下手重构?

作者:付政委 博客:bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 大家好,我是技术UP主小傅哥。多年的 DDD 应用,使我开了技术的眼界! MVC 旧工程腐化严重,…

【转载】阿里技术专家详解 DDD 系列 第一讲 - Domain Primitive

目录1. 导读2. 前言3. Domain Primitive4. 案例分析4.1 问题1 - 接口的清晰度4.2 问题2 - 数据验证和错误处理4.3 问题3 - 业务代码的清晰度4.4 问题4 - 可测试性5. 解决方案5.1 评估1 - 接口的清晰度5.2 评估2 - 数据验证和错误处理5.3 评估3 - 业务代码的清晰度5.4 评估4 - 可…

DDD的终极大招——By Experience

以DDD思想和微服务架构为代表的新的架构时代正在逐步形成,不同方法和工具的涌现让人激动不已,同时这个过程也让人感觉到些许的不安,因为没有一套方法和一套架构能够打遍天下,我们能明确告诉所有组织和团队的,也只是架构…

【DDD】学习笔记-需求分析

背景:企业应用套件 企业应用套件(Enterprise Application Suite,EAS)是一个根据软件集团公司应用信息化的要求而开发的企业级应用软件。EAS 系统提供了大量简单、快捷的操作接口,使得集团相关部门能够更快捷、更方便、…

【DDD】学习笔记-发布者—订阅者模式

在领域设计模型中引入了领域事件,并不意味着就采用了领域事件建模范式,此时的领域事件仅仅作为一种架构或设计模式而已,属于领域设计模型的设计要素。在领域设计建模阶段,如何选择和设计领域事件,存在不同的模式&#…

【转载】阿里技术专家详解DDD系列 第二讲 - 应用架构

目录1. 案例分析1.1 问题1-可维护性能差1.2 问题2-可拓展性差1.3 问题3-可测试性能差1.4 总结分析2.重构方案2.1 抽象数据存储层2.1.1 Repository和Entity2.2 抽象第三方服务2.2.1 防腐层(ACL)2.3 抽象中间件2.4 封装业务逻辑2.4.1 用Domain Primitive封…

后端开发实践系列——事件驱动架构(EDA)编码实践

在本系列的前两篇文章中,笔者分别讲到了后端项目的代码模板和DDD编码实践,在本文中,我将继续以编码实践的方式分享如何落地事件驱动架构。 单纯地讲事件驱动架构(Event Driven Architecture, EDA),那是几十年前就出现了的话题&am…

DDD之上下文映射图(Context Mapping)

领域驱动设计系列文章,点击上方合集↑ 1. 开头 在DDD中,限界上下文与限界上下文之间需要相互集成,这种集成关系在DDD中称为上下文映射(Context Mapping),也就是子域与子域之间的集成关系。 所以首先我们…

DDD之领域(Domain)和子域(Subdomain)

领域驱动设计系列文章,点击上方合集↑ 1. 领域 领域(Domain)是一个组织所做的事情以及其中所包含的一切,领域可以表示整个业务系统。 领域,简单来说,是指一个业务或行业领域,例如电商、社交媒…

DDD项目落地之充血模型实践

一、背景 充血模型是DDD分层架构中实体设计的一种方案,可以使关注点聚焦于业务实现,可有效提升开发效率、提升可维护性; 二、DDD项目落地整体调用关系 调用关系图中的Entity为实体,从进入领域服务(Domin)…

在 DDD 中,如何处理跨多个实体的复杂业务?

在DDD中,跨多个实体的复杂业务通常需要交由领域服务进行协调。领域服务的设计应该遵循以下原则: 定义服务接口。领域服务应该定义一个清晰的接口,这个接口应该包含需要实现的方法和参数。这样可以使得其他模块能够使用这个服务而不需要关心具…

微服务和领域驱动

一、微服务 1.1 什么是微服务 微服务就是一些协同工作的小而自治的服务。 关键词: 小而自治 -- 小 “小”这个概念,一方面体现在微服务的内聚性上。 内聚性也可以称之为单一职责原则:“把因相同原因而变化的东西聚合到一起,…

DDD 参考工程架构

1 背景 不同团队落地DDD所采取的应用架构风格可能不同,并没有统一的、标准的DDD工程架构。有些团队可能遵循经典的DDD四层架构,或改进的DDD四层架构,有些团队可能综合考虑分层架构、整洁架构、六边形架构等多种架构风格,有些在实…

一体多面:哪有什么DO、BO、DTO,只不过是司空见惯的日常

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习 1 分层疑问 无论DDD还是MVC模式构建项目,势必涉及到工程结构的分层&…

从MVC 到DDD 架构

目录 一、前言 二、MVC架构 三、DDD架构 四、我为什么会使用DDD? 五、DDD架构分层 一、前言 最近在做一个项目,使用的是DDD架构思,觉得很不错,在此记录下。 二、MVC架构 MVC是一种经典的软件架构模式,主要用于…

DDD系列 - 第9讲 实体、值对象

目录 引言一、实体1.1 数据库实体1.2 数据库实体 vs. DDD实体1.3 DDD实体的本质及其识别规则1.4 代码中如何定义实体二 、值对象2.1 值对象 vs. 附属属性2.2 值对象 vs. 实体2.3 代码中如何定义值对象2.4 何时使用值对象引言 之前我在《DDD系列 - 第4讲 从架构师的角度看待DDD…

【DDD】学习笔记-领域驱动分层架构与对象模型

领域驱动设计中分层架构的演化,最终得到了如下图所示的领域驱动分层架构: 如果采用对象范式,那么,分层架构每一层的对象模型应该如何设计呢?由于分层架构属于解决方案域中的设计方案,故而逻辑分层中的对象模…

洋葱架构、三层架构及两者区别

前言 洋葱架构它的名称来源于洋葱的层次结构,即软件代码的各层次之间的关系。在这种架构中,应用程序的各个组件通过一系列层次结构被逐层包裹在一起,形成一个类似于洋葱的结构。 一、经典三层架构 三层架构是一种软件设计模式,…

1:DDD入门

产品代码都给你看了,可别再说不会DDD(一):DDD入门 # 这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云(https://www.mryqr…

DDD技术方案落地实践 | 京东云技术团队

1. 引言 从接触领域驱动设计的初学阶段,到实现一个旧系统改造到DDD模型,再到按DDD规范落地的3个的项目。对于领域驱动模型设计研发,从开始的各种疑惑到吸收各种先进的理念,目前在技术实施这一块已经基本比较成熟。在既往经验中总…

Domain Driven Design (DDD)

Domain Driven Design (DDD领域驱动设计)主要是业务分类例如(订单、合同、生产、检测、物流、运输等),独立单元相互不干扰,仅暴露接口的模型。核心在Domain,所有业务模块放这边,当然我们做的时候微服务是一…

DTO、VO、BO、PO等各种XO汇总

贫血模型和富领域模型 1.POJO对象(Plain Old Java Object) Plain Old Java Object(POJO),它的本来含义是指一个常规的、不受任何框架、平台的约束和限制的Java对象。可以认为,如果一个模块定义的对象皆为POJO,那么除了依赖JDK,它…

交互式 Web 应用 0 基础入门

初探 Gradio:轻松构建交互式 Web 应用 文章目录 初探 Gradio:轻松构建交互式 Web 应用Why Gradio?安装 Gradio创建交互式界面1. gr.Interface2. gr.Blocks 强大的组件库输入输出组件控制组件布局组件 示例交互式数据可视化多组件同时(嵌套&a…

【DDD】学习笔记-实体和值对象:从领域模型的基础单元看系统设计

今天我们来学习 DDD 战术设计中的两个重要概念:实体和值对象。 这两个概念都是领域模型中的领域对象。它们在领域模型中起什么作用,战术设计时如何将它们映射到代码和数据模型中去?就是我们这一讲重点要关注的问题。 另外,在战略…

王干娘和西门庆-UMLChina建模知识竞赛第4赛季第18轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先全部答对前3题,即可获得本轮优胜。 所有题目的回答必须放在同一条消息中&…

《软件方法》第1章2023版连载(04)不了解ABCD工作流的危害

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.2 建模工作流 1.2.4 不了解ABCD的危害 1.2.4.1 思维颠倒 如果软件开发人员对以上的“A-业务建模”、“B-需求”、“C-分析”、“D-设计”工作流没有概念,就会把软件开…

DDD 架构分层,MQ消息要放到那一层处理?

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 本文的宗旨在于通过简单干净实践的方式教会读者,使用 Docker 配置 RocketMQ 并在基于 DDD 分层结构的 SpringBoot 工…

京东云开发者DDD妙文欣赏(3)你猜,用例为啥有个“用(use)”字?

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 京东云开发者DDD妙文欣赏(1-2)报菜名和化繁为简的创新>> 图8 《餐厅》中的“用例图” (01) 原文 用例图 赏析 揉一揉眼睛仔细…

《软件方法(下)》第8章2023版连载(02)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.1.5 重视分析工作流 分析,就是从核心域的视角构思系统的内部机理。 在现在的很多软件组织中,分析工作流的技能被严重忽视。很多开发人员上手就直接编码&…

阿里二面,面试官:DDD 的三层含义是什么?我当场就懵了

领域驱动设计包含三层含义: 协作层架构层实现层 协作层 协作层强调的是,需求不是无源之水、无根之木,需求有它的来源,追溯上去,需求常常来自技术之外的业务领域。 因此,软件开发不仅仅是软件与编程&…

DDD领域驱动笔记整理

二话不说,先上demo,这个项目是github上使用DDD设计的一个demo,可以看看人家用DDD结合代码怎么实现的,我们的项目也在用DDD,最终实现的代码,跟这个差不多,但是没怎么理解,这次就先慢慢…

9领域事件

本系列包含以下文章: DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务领域事件(本文)CQRS 案例项目介绍 # 既然DDD是“领域”驱动,那么我们便不能抛开业务而只讲技术&…

​2:DDD概念大白话

产品代码都给你看了,可别再说不会DDD(二):DDD概念大白话 # 这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云(https://www…

领域驱动设计-软件核心复杂性应对之道-笔记1

文章目录 第一部分 运用领域模型第1章 消化知识1.1 有效建模的要素1.2 知识消化1.3 持续学习1.4 知识丰富的设计1.5 深层模型 第2章 交流与语言的使用2.1 模式:UBIQUITOUS LANGUAGE2.2 "大声地"建模2.3 一个团队,一种语言2.4 文档和图2.4.1 书…

2.认识中台

1.数字化中台初步认识与建设策略 中台的定义 阿里对中台的定义: 中台是一个基础的理念和架构,我们要用中台的思想建设、联通所有基础服务,共同支持上端的业务。业务中台更多的是支持在线业务,数据中台则提供基础数据处理能力和很多的数据产…

使用 DDD 指导微服务拆分的逻辑

对于服务拆分的逻辑来说,是先设计高内聚低耦合的领域模型,再实现相应的分布式系统。服务的划分有一些基本的方法和原则,通过这些方法能让微服务划分更有操作性。最终在微服务落地实施时也能按图索骥,无论是对遗留系统改造还是全新…

领域驱动设计-软件核心复杂性应对之道-笔记

文章目录 *** 阅读感 第一部分 运用领域模型第1章 消化知识1.1 有效建模的要素1.2 知识消化1.3 持续学习1.4 知识丰富的设计1.5 深层模型 第2章 交流与语言的使用2.1 模式:UBIQUITOUS LANGUAGE2.2 "大声地"建模2.3 一个团队,一种语言2.4 文档和…