当前位置: 首页 > news >正文

DDD FAQs梳理

术语

领域:一种专门活动的范围、部类。
子域:一个领域细分出的多个子领域。
核心域:具备核心竞争力的子域。
通用域:同时被多个子域使用的通用功能子域,比如认证、权限。
支撑域:一些辅助性或后台功能组成的子域。
限界上下文:语义所在的领域范围,为了避免同样的概念或语义在不同的上下文幻境产生歧义。限界上下文
实体
值对象
聚合:聚合就是值对象和实体的集合。
聚合根:聚合根是聚合的管理者,负责协同实体和值对象按照业务规则完成操作。聚合根的主要目的是为了避免由于复杂数据模型缺少统一的业务规则控制,而导致聚合、实体之间数据不一致性的问题。
战略设计:建立业务领域模型,划分领域边界,建立通用语言的限界上下文。
战术设计:战术设计则从技术视角出发,侧重于领域模型的技术实现,完成软件开发和落地,包括:聚合根、实体、值对象、领域服务、应用服务和资源库等代码逻辑的设计和实现。
通用语言:通过团队交流达成共识的,能够简单、清晰、准确描述业务涵义和规则的语言。

DDD概述

领域划分
DDD 主要关注:从业务领域视角划分领域边界,构建通用语言进行高效沟通,通过业务抽象,建立领域模型,维持业务和代码的逻辑一致性。

聚合

聚合的设计方法

  1. 用例分析、场景分析、用户旅程分析,列出所有业务行为和事件,找出领域对象。
  2. 找出聚合根,找出和聚合根紧密关联的实体和值对象。
  3. 组合聚合根、实体、值对象,构建聚合。

聚合的设计原则

  1. 在一致性边界内建模不变条件,聚合内的对象应该遵循一套业务规则。
  2. 设计小聚合,小聚合有助于提高性能,避免并发操作出现的一致性冲突。
  3. 通过唯一标识引用其它聚合,而不是直接对象引用(会导致聚合边界不清晰、增加聚合之间的耦合度)。
  4. 聚合边界之外实现最终一致性。一个事务只保证一个聚合的状态强一致性,对于多个聚合则采用领域事件实现最终一致性。
  5. 通过应用层实现跨聚合的服务调用。应避免跨聚合的领域服务调用和跨聚合的数据库表关联。

聚合有什么用

  1. 确保数据一致性
  2. 简化模型设计
  3. 提高封装性
  4. 控制事务边界

中台

中台与领域的对应关系
中台与子域一一对应。从领域功能属性和重要性对照来看,通用中台对应 DDD 的通用域和支撑域,核心中台对应 DDD 的核心域。从领域的功能范围来看,子域与中台是一致的。

http://www.lryc.cn/news/523451.html

相关文章:

  • 新星杯-ESP32智能硬件开发--SoC基础
  • WDM_OTN_基础知识_波分系统的网络位置
  • 计算机网络 (46)简单网络管理协议SNMP
  • Excel重新踩坑6:工作实战总结之根据筛选条件求平均成绩
  • 使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。
  • 20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识
  • 《Hands_On_LLM》8.3: 检索增强生成-RAG技术概论
  • CSS中样式继承+优先级
  • Vue进阶之旅:核心技术与页面应用实战(路由进阶)
  • 单片机存储器和C程序编译过程
  • Vue.js 动态设置表格最大高度的实现
  • Java测试开发平台搭建(九)前端
  • MySQL多表查询练习
  • 低代码运维与管理服务
  • 【机器学习:三十二、强化学习:理论与应用】
  • 解决wordpress媒体文件无法被搜索的问题
  • 【2024年华为OD机试】(B卷,100分)- 增强的strstr (Java JS PythonC/C++)
  • 【前端】CSS学习笔记
  • 项目架构调整,新增sunrays-combinations模块
  • linux网络编程11——线程池
  • MySQL - 主从同步
  • 基于微信小程序的安心陪诊管理系统
  • 深入剖析iOS网络优化策略,提升App性能
  • 游戏开发中常用的设计模式
  • 【PyCharm】远程连接Linux服务器
  • InVideo AI技术浅析(五):生成对抗网络
  • Spring自定义BeanPostProcessor实现bean的代理
  • 【HF设计模式】06-命令模式
  • Linux使用SSH连接GitHub指南
  • v2富文本框封装 @wangeditor/editor-for-vue