DDD-笔记

2023-11-17

先说下传统系统设计,大部分从数据库开始–自底向上的设计,这种设计会使系统的设计受到数据库的影响,会有比较大的局限性,比如说:数据库仅有数据,没有行为,而对现实世界的描述则会更加抽象,更加远离业务.开发团队通过与产品或客户的沟通,直接设计表模型,由于会受到沟通的效率的影响,客户不懂技术,开发从技术角度思考,整个沟通过程则会有较大的信息损失,所设计出的表模型则很可能面临后期业务变动的挑战.导致系统的成败主要取决于架构师在那个领域的业务水平而不是技术水平.

而DDD是采用自定而下的设计,战略设计时业务为王,不再受到技术的局限性(我想可能跟现在技术的发展有关系,极大丰富的底层技术框架,使得技术选型更加自由),设计过程中,需要业务专家(不用懂技术,比如客户和产品等)和开发团队一块仅仅从业务的角度分析需求,不要受到任何技术的局限性,采用事件风暴(类似头脑风暴)的方式,讨论整个系统面临的各种用户场景,整个系统提供的各个功能模块,做业务上的归集分类分级,在讨论过程中,各个团队(客户 产品 开发 测试 运维 交付)逐渐统一语言(同一个限界上下文中),使得业务场景更加清晰的被描述和归纳分类出来,在整个沟通中更加有效率,更加准确,后续维护阶段的持续交付迭代都将由此而获益.

简单来讲就是要大家在设计阶段,不要受到技术实现的影响,统一名词概念,确保各个团队,针对同一个名词在说的是同一个事情.
摘自:https://zhuanlan.zhihu.com/p/351162895

领域驱动设计关心的是业务中的领域划分(战略设计)和领域建模(战术设计),其开发过程不再以数据模型为起点。而是以领域模型为出发点。它更加关注业务语义的显性化表达,而不是数据的存储和数据之间的关系。这是“领域驱动设计”和“数据驱动设计”之间显著的区别。

DDD鼓励我们接触到需求后第一步就是考虑领域模型,而不是将其切割成数据和行为,然后用数据库实现数据,用服务实现行为,最后造成需求的首尾分离。DDD会让你首先考虑业务语言,而不是数据。DDD强调业务抽象和面向对象编程,而不是过程式业务逻辑实现。重点不同,导致编程世界观不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DDD-笔记 的相关文章

  • DDD中的模式

    一 背景 在学DDD的时候我首先看的是 领域驱动设计 软件核心复杂性应对之道 xff0c 这本书里记录了很多概念 xff0c 方法 xff0c 思想 xff0c 策略 xff0c 模式等 整体读下来非常费劲但是收获也不小 xff0c 如何转
  • 【DDD】持久化领域对象的方法实践

    概述 在实践领域驱动设计 xff08 DDD xff09 的过程中 xff0c 我们会根据项目的所在领域以及需求情况捕获出一定数量的领域对象 设计得足够好的领域对象便于我们更加透彻的理解业务 xff0c 方便系统后期的扩展和维护 xff0c
  • 在UBUNTU18.04中安装DDD调试器调试内核时启动调试器的警告解决方法

    在UBUNTU18 04中安装DDD调试器调试内核时启动调试器的警告解决方法 xff1a Warning Cannot convert string 34 helvetica medium r 120 iso8859 34 to type
  • DDD开发

    内容来自某PPT 文章目录 DDD开发1 领域 限定上下文 实体 值对象1 1 领域 子域1 2 核心域 通用域 支撑域1 3 通用语言1 4 限界上下文 xff1a 定义领域边界的利器1 5 实体1 6 值对象1 7 实体 VS 值对象
  • 【转载】DDD中的 CQRS模式

    转载自 xff1a DDD 中的那些模式 CQRS 知乎 DDD 作为一种系统分析的方法论 xff0c 最大的问题是如何在项目中实践 而在实践过程中必然会面临许多的问题 xff0c 模式 是系统架构领域中一种常见的手段 xff0c 能够帮助
  • 重新解读DDD领域驱动设计(一)

    回顾 十年前 xff0c 还未踏入某校时 xff0c 便听闻某学长一毕业就入职北京某公司 xff0c 月薪过万 对于一个名不见经传的小学院 xff0c 一毕业能拿到这个薪水还是非常厉害的 听闻他学生期间参与开发了一款股票软件 xff0c 股
  • DDD(领域驱动设计)系列主题:聚合和聚合根

    本篇文章主要介绍了聚合根 聚合的概念 然后介绍了聚合的设计过程和原则 以及对比了聚合 聚合根 实体 值对象的特点 思考的问题 为什么要在限界上下文和实体之间增加聚合和聚合根的概念 它们的作用是什么 如何设计聚合 概念和职责 聚合根 如果把聚
  • 2.5万字讲解DDD领域驱动设计,从理论到实践掌握DDD分层架构设计,赶紧收藏起来吧

    推荐好文 2 5万字详解23种设计模式 微服务springcloud环境下基于Netty搭建websocket集群实现服务器消息推送 netty是yyds 代码中如何干掉太多的if else即if else的多种替代方案以提高代码质量通过公
  • 领域驱动设计:DDD 关键概念

    文章目录 领域和子域 核心域 通用域和支撑域 通用语言 限界上下文 实体 值对象 聚合 聚合根 设计聚合 DDD 的知识体系提出了很多的名词 像 领域 子域 核心域 通用域 支撑域 限界上下文 聚合 聚合根 实体 值对象等等 非常多 领域和
  • 【实践篇】DDD脚手架及编码规范

    一 背景介绍 我们团队一直在持续推进业务系统的体系化治理工作 在这个过程中我们沉淀了自己的DDD脚手架项目 脚手架项目是体系化治理过程中比较重要的一环 它的作用有两点 1 可以对新建的项目进行统一的规范 2 对于指导老项目进行DDD的改造提
  • [答疑]同事认为应该先画序列图,强烈反对先画类图

    DDD领域驱动设计批评文集 软件方法建模师 不再考查基础题 软件方法 各章合集 匿 2023 8 28 17 19 团队分享会 我和同事分享了学习软件方法下的心得 我说根据需求规格说明书画出类图 再画时序图添加类的方法 有一个高开就说应该先
  • 领域驱动设计DDD

    什么是领域驱动设计 DDD 领域驱动设计 Domain Driven Design 简称 DDD 是一种软件开发方法论 旨在解决复杂业务领域的建模和实现问题 DDD 强调将业务领域作为软件设计和开发的核心 通过深入理解业务领域的知识 将其反
  • 领域驱动设计:领域事件

    文章目录 领域事件 识别领域事件 领域事件相关案例 领域事件总体架构 领域事件 领域事件是领域模型中非常重要的一部分 用来表示领域中发生的事件 一个领域事件将导致进一步的业务操作 在实现业务解耦的同时 还有助于形成完整的业务闭环 举例来说的
  • 领域驱动模型(DDD)在美团外卖活动管理业务的应用

    什么是领域驱动模型 2004年Eric Evans 发表 领域驱动设计 软件核心复杂性应对之道 Domain Driven Design Tackling Complexity in the Heart of Software 简称Evan
  • 领域驱动设计-Domain-Driven-Design概念

    2021了 你应该要了解DDD了 不然领导和你吹牛你都听不懂 或者你都没法和别人吹牛了 一 Evans DDD 是什么 1 1 背景 2002年 敏捷宣言诞生 时代处于 CS 到 BS 的转换时期 2003年 Eric Evans 发表 l
  • 第8章 应用程序架构

    第8章 应用程序架构 之前 介绍了让团队可以对问题域的有用概念抽象建模的技术 不过 这一章将介绍可以在应用程序上下文中利用领域模型的模式 其中考虑到了持久化 展现以及其他技术需求 应用程序架构 遵循DDD原则开发软件不需要使用任何特殊的应用
  • DDD-笔记

    先说下传统系统设计 大部分从数据库开始 自底向上的设计 这种设计会使系统的设计受到数据库的影响 会有比较大的局限性 比如说 数据库仅有数据 没有行为 而对现实世界的描述则会更加抽象 更加远离业务 开发团队通过与产品或客户的沟通 直接设计表模
  • 领域驱动设计:DDD重构中台业务模型

    文章目录 如何避免重复造轮子 如何构建中台业务模型 如何避免重复造轮子 要避免重复建设 就要理解中台的理念和思想 中台是企业级能力复用平台 复用 用白话说就是重复使用 就是要避免重复造轮子的事情 中台的设计思想与 高内聚 低耦合 的设计原则
  • 领域驱动设计:DDD分层架构

    文章目录 DDD 分层架构 DDD 分层架构最重要的原则 DDD 分层架构推动架构演进 三层架构如何演进到 DDD 分层架构 微服务架构模型有好多种 例如整洁架构 CQRS 和六边形架构等等 每种架构模式虽然提出的时代和背景不同 但其核心理
  • 【实践篇】领域驱动设计:DDD工程参考架构

    背景 为什么要制定参考工程架构 不同团队落地DDD所采取的应用架构风格可能不同 并没有统一的 标准的DDD工程架构 有些团队可能遵循经典的DDD四层架构 或改进的DDD四层架构 有些团队可能综合考虑分层架构 整洁架构 六边形架构等多种架构风

随机推荐

  • 树莓派4b风扇安装方法_树莓派安装手记

    女王节前夕做活动 卖树莓派的淘宝店家做活动 又在盆友的鼓励下剁手买了一个派 245元 有一个3代B型的派 一根带插头的充电线 一个需要自己组装的透明外壳 散热片 小风扇 就没了 是的 没有屏幕 我这里的条件也不太乐观 一台没有网线接口的超薄
  • 【操作系统】Linux Kernel中memcpy的汇编实现 详解(包括必要基础概念等)

    memcpy汇编实现 由于这篇博客是从我的各种笔记上搬的 我不知道自己为什么看了mmcpy汇编实现 也许单纯就是因为好玩 在arch x86 boot Copy S中 由Linus在1992年写的一段代码 GLOBAL memcpy pus
  • brew install mysql

    Mac安装MySQL Brew 以及修改默认密码 折腾了一大圈之后 得知需要安装MacOS的包管理器 HomeBrew 百度搜索macos安装homebrew 进入第一个CSDN大佬文章开始撸 安装HomeBrew教程 跟着教程把brew安
  • 连续随机变量的概率分布(正态分布)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 概率密度与分布函数 当用函数f x 来表示连续型随机变量时 我们将f x 称为概率密度函数 或者密度函数 想要求随机变量的概率 可以用 分布函数F x 来表示 F x 为图
  • 【JavaScript速成之路】一文带你初识JavaScript

    个人主页 小杨 的csdn博客 系列专栏 JavaScript速成之路 希望大家多多支持 一起进步呀 文章目录 前言 1 JavaScript 1 1 JavaScript概述 1 2 JavaScript历史 1 3 JavaScript
  • History API 使用指北

    https yeaseonzhang github io 2017 03 03 History API E4 BD BF E7 94 A8 E6 8C 87 E5 8C 97 more HTML5 History API 基本上是为了SPA
  • vue.config.js配置解析

    const path require path module exports publicPath publicPath process env NODE ENV production production sub path outputD
  • mybatis动态sql中的trim标签的使用

    trim标记是一个格式化的标记 可以完成set或者是where标记的功能 如下代码 trim标记是一个格式化的标记 可以完成set或者是where标记的功能 如下代码 1 select from user
  • java jvm监控实现_JVM及Java监控原理与实践

    简介 主要是介绍一下对运行Java程序的一些跟踪 以及对JVM内存等方面进行运维的一些方法 反解析class文件的工具使用 一般使用jd gui工具进行反编译class文件 有些jd gui无法反编译的class 可以使用luyten工具进
  • 关于video标签的巨坑

    事情是这样的 请求第一页的资源的时候 第一个位置是个视频 现在视频的src是写在video的source中的 第一个位置 但是切换到下一页的时候 下一页的数据的第一个位置也是视频 但是页面上显示的还是之前的 打开调试工具看 可以发现sour
  • Qt :非window子窗体的透明度设置

    问题的由来 心血来潮 想利用QTimer 配合 setWindowOpacity 方法来实现一个窗体淡入的效果 实验代码 粗糙的实验代码 void Widget on pushButton clicked QTimer timerOpaci
  • 3DMAX怎么把模型分开

    一 3dmax怎么把模型分开 1 怎样将一个合并过得物体分解成数个小物体呢 前提是经过合并过得 2 如果是成组的物体 只需点击工具栏 组 成组 3 如果是附加合并的物体 点击组的话 不会出现其他的命令 这时 要在修改面板分离 选中物体 右键
  • 空中旋球计算机控制系统,自动乒乓球发球机设计及其控制系统的研究

    摘要 为了使练习者能更好地学习乒乓球技术以达到健身和训练的目的 本文针对乒乓球发球的特点 从总体上设计了一种新型的乒乓球发球机 自动乒乓球发球机 本文综述了国内外乒乓球发球机的现状 对已有发球机的机械结构进行分析 根据所需实现的功能 提出了
  • IDEA使用教程最全汇总(持续更新)

    1 IDEA实用设置小技巧 2 IDEA常用快捷键 3 IDEA关联数据库 前言 本文记录IDEA实用的使用教程 以作记录 一 IDEA实用设置小技巧 1 IDEA去掉代码黄色下划线 在IDEA中根据设置的不同 有些代码页 当代码重复比较多
  • 【RabbitMQ分析】01 SimpleMessageListenerContainer原理分析

    往期推荐 sharding sphere 01 SQL路由 Nacos源码分析 02 获取配置流程 Java并发编程 03 MESI 内存屏障 Spring源码 11 Spring AOP之编程式事务 编程开发 01 日志框架 概述 Sim
  • 网络安全:制作 windows 和 linux 客户端恶意软件进行渗透

    实战 制作 Windows 恶意软件获取公司财务电脑 shell 实战 WinRAR 捆绑恶意程序并自动上线 MSF 实战 制作 Linux 恶意软件获取公司服务器 shell 实战 制作恶意 deb 软件包来触发后门 1 制作 Windo
  • python 使用上级目录的文件(相对路径,绝对路径)

    Python功能点实现 多方法访问上级目录中的文件 简书 1 相对路径 csv test b txt 2 绝对路径 from os path import dirname abspath dirname dirname abspath fi
  • php 随机生成指定金额范围内的随机数

    function random bag money total personal num min money money total 20 personal num 19 min money 1 money right money tota
  • CSS之设置图片宽度100%,高度等于宽度

    html代码如下 div class left div class img img src static img face 2 jpg div div stulus语法 img position relative width 100 hei
  • DDD-笔记

    先说下传统系统设计 大部分从数据库开始 自底向上的设计 这种设计会使系统的设计受到数据库的影响 会有比较大的局限性 比如说 数据库仅有数据 没有行为 而对现实世界的描述则会更加抽象 更加远离业务 开发团队通过与产品或客户的沟通 直接设计表模