手把手教你落地 DDD
钟敬
Thoughtworks 首席咨询师、数字化转型与运营团队 DDD 负责人
19697 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 45 讲
AIGC特别策划 (2讲)
结束语&结课测试 (2讲)
手把手教你落地 DDD
15
15
1.0x
00:00/00:00
登录|注册

13|迭代二概述:怎样更深刻地理解领域知识?

你好,我是钟敬。
这节课开始,我们即将进入第二个迭代,一起学习几个 DDD 里更高级的实践和模式,带你逐步提升领域建模能力,更深刻地理解领域知识。
在梳理迭代二主要内容和迭代需求之前,我会先帮你巩固一下迭代一知识点。这是因为,你在学习了前面的课程以后,有些知识点虽然掌握了,但知识点之间还没能形成有机的整体。这节课我会帮你把它们联系起来,形成完整的知识图景。另一方面,只有扎实地掌握迭代一,才能更好地掌握迭代二。

迭代一回顾

在《领域驱动设计》的原书里,Evans 喜欢用“概念图”总结模式。我也准备学习原作者,用概念图帮你串联一下迭代一的知识点。概念图是个比较简单的工具,在下面的讲解过程中你自然就会掌握了。另外,我也会指出每个知识点在《领域驱动设计》一书中的章节,以便你对照原书,进一步加深理解。
按照建模落地的过程,我们把迭代一的知识点分成捕获行为需求和事件风暴、模型的建立以及模型的实现这三个部分来回顾。

捕获行为需求和事件风暴

首先,我们复习一下捕获行为需求和事件风暴。下面这张图表示了捕获行为需求和 DDD 两个核心模式的关系。
这张图就是一张概念图。一个椭圆框表示一个概念。箭头表示概念之间有关系。箭头上的文字表示关系的含义。箭头的方向代表的是读这些文字的方向。比如说,“用例分析”指向“捕获行为需求”,读“……是……的一种方法”的时候,就把“用例分析”代入第一个省略号,把“捕获行为需求”代入第二个省略号,对应的读法是“用例分析是捕获行为需求的一种方法”。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

迭代二的内容包括聚合、值对象、限定和泛化等高级技能的学习,以处理更复杂的需求。聚合是领域对象的整体部分关系组合,有助于确定事务边界和保护业务规则;值对象的理解将帮助更细致地建模领域知识,避免常见建模错误;限定和泛化则提高模型的抽象程度,使其更加灵活和强大。新需求涉及人员与组织管理、项目管理和工时登记,增加了系统的灵活性,包括记录员工工作经验和技能、管理项目的绩效评估和责任分配、以及工时登记的灵活性。通过学习迭代二的内容和需求,读者将能够更深入地理解领域知识和建模技能,处理更复杂的问题。文章内容丰富,涵盖了领域驱动设计中的高级实践和模式,为读者提供了深入学习的机会。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手教你落地 DDD》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(20)

  • 最新
  • 精选
  • 听水的湖
    置顶
    【代码更新】 同学们好,我是编辑小新。 迭代一配套代码已整理到GitHub,希望同学们好好利用,觉得不错别忘了给老师点个Star。 代码链接:https://github.com/zhongjinggz/geekdemo
    2023-04-04归属地:北京
    1
  • 听水的湖
    置顶
    🚩【特别策划之建模题目挑战赛】 同学们好,我是这门课的编辑小新,为了帮助同学们更好的学习和理解DDD,更深入地和老师学习、互动。我们给大家安排了这次建模题目,体现大家综合实力的时候到了! 钟老师给出了如下需求场景,请你来绘制领域模型。 假设你所在的公司想实施敏捷软件开发,委托你为公司开发一个敏捷项目管理软件。公司领导提出的需求是这样的: 1.公司会开发很多款软件产品,每个产品有一个产品待办清单(product backlog)。 2.产品待办清单中的待办项是用户故事,由产品经理提供。 3.用户故事有一个文字性的描述,还有若干验收条件(Acceptance Criteria)。 4.产品经理可调整代办项的优先级。 5.每个用户故事要估算故事点。 6.每个迭代,项目经理把用户故事移入迭代待办清单(sprint backlog)。 7.每个迭代,由一个敏捷团队负责。 8.迭代待办清单所有故事点的和不能超过迭代容量。 9.每个用户故事由一个同事负责。 10.每个用户故事有TODO、DOING、DONE 三种状态,由开发人员切换状态。 请根据上面的场景,用你熟悉的工具绘制出系统的领域模型。然后把模型以图片的形式导出,贴在你喜欢的共享文档(例如腾讯文档、石墨文档等),然后在这节课的留言区里提交超链接就可以了,提交格式为昵称+链接。我看到后,会精选评论并置顶。 这道题假设你学习完了迭代一,并且了解敏捷软件开发过程。如果对“产品代办清单”“迭代代办清单”“用户故事”“验收条件”“故事点”“敏捷团队”等概念还不了解的话,可以去网上搜一下,这些都是敏捷的一些基本概念。 请注意这道题的目的不是为了考试,而是锻炼同学们的建模技能,所以你也不妨发挥一下,增加一些合理的需求,以便使模型更加丰富。期待你的“作业”!
    2023-01-09归属地:北京
    2
    2
  • escray
    概念图 concept map 是 1970 年左右提出来的,不知道是什么原因,没有思维导图那么流行,但是表达能力还是挺好的。没有看过《领域驱动设计》,所以专栏中的几张概念图让我印象深刻,感觉在头脑风暴的时候可以使用。 对于思考题,聚合和值对象之前都曾经听说过,而且一般不作为特别重点的概念讲解,所以对于迭代二有点好奇。 1. 我的理解,聚合就是把一组相关的领域模型集合起来,提炼出聚合根,比如人员管理上,员工就可以作为一个聚合根。 2. 值对象一般是不需要实例化的对象,也就是不能独立存在的对象,比如人员的角色、岗位、职级之类的。

    作者回复: 思维导图是有层次的,概念图没有固有的层次。 现在您应该已经学过值对象的课程了吧?原谅我回复得太迟了 :)

    2023-01-29归属地:北京
    2
  • aoe
    看了迭代二的需求,故事越来越真实了

    作者回复: 再接再厉,共同提高

    2023-01-04归属地:广东
    2
    2
  • Johar
    1. 你以前是否听说过聚合,你是怎么理解的? 聚合也是目前微服务划分的一种常用手段,将业务关系紧密,规模大小合适的一些领域对象作为一个聚合放在一个微服务中。 2. 你以前是否听说过值对象,你是怎么理解的? 值对象,判断唯一性可以根据其值判断,而不是根据id判断,在DDD中一般根据是否有单独的持久化记录来判断。

    作者回复: 抱歉我回答得太迟了。您现在应该已经看到后面的课程了,这两个问题已经不成问题了吧?

    2023-01-25归属地:重庆
    1
  • plimlips
    其实一直想知道: 1.为什么领域对象只有实体和值对象两种?他们是否就是0和1的关系,在这个维度就这两个? 2.领域服务、领域事件又是什么维度的对象? 3.设计模式中的角色对象和领域对象是怎样的关系?

    作者回复: 1 是的,这个维度就两种 2 模型可分为动态和静态两方面,领域对象是静态,领域服务和领域事件是动态方面 3 哪个设计模式有角色对象?

    2023-01-23归属地:重庆
    2
    1
  • kkxue
    刚好想问如何对照《DDD》

    编辑回复: 哈哈哈老师的预判挺准,希望课程能让你渐入佳境~

    2023-01-04归属地:北京
    1
  • Geek_53c57c
    老师深入浅出,以前做的项目用到了DDD,对于项目的架构设计一直理解的不到位。看了老师的课,受益匪浅。

    作者回复: 多谢,共同进步!

    2023-10-12归属地:美国
  • runmark
    模型的实现 一节中的图是否有问题? 适配器层, 应该是被动适配器包含仓库的实现。 图中画错了。

    作者回复: 你说得对,谢谢抓虫。

    2023-07-06归属地:山东
  • Geek_d80800
    https://www.processon.com/view/link/64896e101da920111bce9e8f 员工角色,通过starUml不太好画,有没有好的工具推荐

    作者回复: 我这个课用的是 draw.io

    2023-06-14归属地:上海
收起评论
显示
设置
留言
20
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部