一文带你初识DDD领域驱动设计

DDD是什么?

DDD(Domain-driven design),是领域驱动设计的缩写。

然而,领域驱动设计,是什么?很多书籍,很多博客,都没有对领域驱动设计下一个标准的定义。

就连《实现领域驱动设计》这一本书,也没有对领域驱动设计下了标准化的定义,而是反复描述DDD能解决些什么、应该怎么样做才是DDD。

因为,DDD是一种方法论,是一种指导思想,从不同的视角去看DDD结果是不一样的,因此,不适合对DDD做标准化定义,也无法对DDD做标准化定义。

DDD是站在高维视角上,总览全局。

读懂DDD,需要脱离传统技术人员的视角限制,不仅要用程序员的视角,还要用产品经理的视角、项目经理的视角、以至高层管理的视角。

所以,如果你执着于给DDD下一个定义,那么,就是陷入到思维的囚笼中无法逃脱。

为什么会有DDD出现?

任何事物的发展,生灭,都是有它有必然道理。

DDD不是一个新的发明,只是一个概念被正式提出,在没有提出DDD这个概念之前,DDD就实际上已经是事实上存在了,因为,DDD的真正含义已经是被践行!

回想一下,你所在的公司,当需要开发一个软件系统的时候,是怎么做的?

是不是,需求人员进行需求分析,领导层进行决策,然后进入软件设计,接着是编码,接着是测试,直至软件完成?

假设你是业务人员,你是不是经常与IT人员反复强调自己想要哪些功能,然而做好的功能经常不是自己想要的?你想将你的想法毫无保留地告诉IT人员,然而IT人员经常不知道你在说啥。

假设你是需求人员,你是不是经常在想,这个需求是否是合理的?是不是经常疑惑,用户到底想要些什么、怎么样才能解决用户的痛点?

假设你是设计人员,你是不是经常因为不停变化的需求而不停地大范围修改自己的设计?是不是经常因为需求很复杂,而觉得设计工作无所下手?

假设你是编码人员,你是不是经常因为看不懂设计人员的文档,或者根本就没有设计文档而苦恼?是不是经常因为需求的变化,而需要对代码进行大范围的改动?

假设你是测试人员,你是不是经常因为开发拖堂而没有足够的时间测试?是不是经常因为开发bug多而工作量大?

软件开发的每一个阶段,都充满了不确定性,上一个阶段的风险往往在下一个阶段才会暴露,随时软件开发的时候越长,软件开发所承受的风险就越大,随之而来的失败概率也就越大。

正是因为有这么多的问题存在,所以业界大佬才提炼出了DDD。

DDD能做些什么?

DDD出现的原因,就是DDD能做些什么!

很多公司发现在研发软件的过程中,发现项目越大、周期越长,风险就越大,急需一种能有效降低风险的解决方案。

践行DDD,能有效地降低软件开中遇到的风险,使软件能顺利交付。

我们能做DDD吗?

能做DDD,与真正做到DDD,是两回事!很多团队觉得自己能做DDD,但在践行DDD的时候却没有做到DDD。古人说:名与实符。如果只是把DDD挂在口上,而不去践行,那么永远是纸上谈兵,是名DDD,而非DDD。

思维是一道无形的墙,把人牢牢的锁在里面,如同坐井之蛙,看不到天地之阔,也看不到世代的波澜壮阔。

古人说:破而后立,革旧鼎新。

《易经》又说:穷则变,变则通,通则达,达则久。

要想践行DDD,得先打破思想的囚笼。让软件开发者具备产品思维,学会站在产品的角度思考问题。让业务人员具备一定的软件知识,学会使用软件开发者的视角看问题。

思维的格局打开之后,再回来看DDD,你会发现DDD的思想充满着哲学的智慧。

在践行DDD的时候,要避免教条主义,不能死板地照搬书中的内容,也不能完全不动地复制他人的DDD成果,要结合自身的条件,发展出符合自身的DDD。

结语

读到这里,你明白DDD是什么了吗?

没有明白也不要紧,接下来的文章会带你走进DDD,从实践中领悟DDD!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全坚固笔记本丨工业笔记本丨三防笔记本相较于普通笔记本有哪些优势?

三防笔记本和普通笔记本在设计和性能方面存在显著差异,三防笔记本相较于普通笔记本具备以下优势: 三防笔记本通常采用耐磨、耐摔的材料,并具有坚固的外壳设计,能够承受恶劣环境和意外碰撞,有效保护内部组件不受损坏。相…

【话题】如何看待那些速成并精通软件书籍的神器

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景1. 神话与现实1.1 理论与实践之间的鸿沟1.2 一劳永逸的错觉 2. 速成书籍的优势与局限2.1 优势:2.2 局限: 3. 如何有效利用速成书籍3.1 量力而…

网页设计必备工具大揭秘:最新整理!

网页设计师经常面临很多困难,其中一些可能来自于与客户沟通不畅,传达设计理念和进度可能非常困难。此时,网页原型设计可以发挥很好的作用。一个还原度高、信息架构清晰的网页原型设计,可以让用户更容易理解项目方案的概念&#xf…

计算机考研精选1000题,408科目高频考点

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

利用Leaflet + React:构建WEBGIS

React是 Facebook 开发的一个开源库,用于构建用户界面。就其本身而言,Leaflet是一个用于将地图发布到网络的JavaScript 库。这两个工具的组合很简单,允许您创建动态网络地图。在本文中,我们将看到这种组合的一些特征以及一些简单的…

财富池指标--通达信涨跌停均线指标公式源码

今日分享的通达信涨跌停均线指标公式是一个均线分析涨跌停信号的指标。 具体信号说明: 当指标中出现黄色信号柱,是上涨的信号,可参考买入,当出现钱的图标的时候,是一字板的信号,一字板开板逃跑图标&#x…

c 语言 指数搜索(Exponential Search)

该搜索算法的名称可能会产生误导,因为它的工作时间为 O(Log n)。该名称来自于它搜索元素的方式。 给定一个已排序的数组和要 搜索的元素 x,找到 x 在数组中的位置。 输入:arr[] {10, 20, 40, 45, 55} x 45 输出:在索…

第⑪讲:Ceph集群OSD扩容方案及实现横向和纵向扩容

文章目录 1.Ceph集群OSD扩容方案2.实现OSD的横向扩容4.实现OSD的纵向扩容 1.Ceph集群OSD扩容方案 Ceph集群OSD的扩容支持两种方式: 横向扩容 通过增加OSD节点来达到扩容的目的。使用横向扩容要完成以下几个步骤: 在新的机器中进行初始化操作、配置Yum源…

授人以渔 选购篇四:电视选购要点

文章目录 系列文章屏幕尺寸显示技术与面板类型:优选OLED,Mini LED分辨率和刷新率:4K以上,优选120Hz以上画质支持HDR支持广色域选择RGB 3色支持运动补偿 智能操作系统品牌其他 系列文章 授人以渔 选购篇一:信用卡选购要…

【OJ】stack刷题

个人主页 : zxctscl 如有转载请先通知 题目 1. 155. 最小栈1.1 分析1.2 代码 2. JZ31 栈的压入、弹出序列2.1 分析2.2 代码 3. 150. 逆波兰表达式求值3.1 分析3.2 代码 1. 155. 最小栈 1.1 分析 利用两个栈,一个栈a负责入数据和出数据,另一个…

Java基于微信小程序的校园外卖平台系统,附源码

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

web自动化测试系列-如何选择实战项目(四)

目录 1.项目安装 2.项目优点 3.项目介绍 3.1 项目介绍 3.3 商品展示 接上文 :web自动化测试系列-页面元素该如何定位?(三)-CSDN博客 在后续的技术操作中都将会使用到项目 ,如果你有自己的练手项目 ,优先拿自己的项目做练习&#xff0c…