学习课程名称:DDD(领域驱动模型)思想解读及落地指南
章节名称:第一章 领域驱动设计的背景和来源(1-1,1-2)
讲师姓名:尤达_技术咖啡
课程内容:
1-1课程导学:从4步讲了我们为什么要学DDD以及如何学
第一步讲了我们学习DDD的三个原因
随着我们进入深化数字化转型的时代,我们将面临越来越高的系统复杂性,而DDD是应对如何建设复杂系统的有效方法。
现在各大厂纷纷引入DDD中,这也导致作为程序员,学习DDD是应对市场需求。
DDD是程序员从骨干成员向架构师演进的必要技术。
第二步讲了学习DDD的困难
概念抽象。
只闻其声不见其用,使用的案例少,成功案例更少。
知道基于DDD如何用,但不知道为何这样用。
第三步讲了如何学习DDD
基于实际问题出发进行分析,使用方法应用的案例中,并在案例中挖掘更多问题,再基于问题重新分析,形成一个落地循环。
第四步讲了案例是学习DDD的关键,然后介绍了本课程中使用的案例:智慧零售案例介绍
1-2 DDD核心思想和解决的痛点问题
1.什么是模型和建模?
模型就是对现实世界在软件系统中的映射,既可以是现实世界的一个事物,比如汽车,也可以是现实世界的一个虚拟概念,比如商品、订单等。模型包含事物的属性以及事物之间的关系,是对某个领域的抽象和模拟。
建模是针对特点问题建立领域的合理模型。
所以建模是过程,模型是建模的产物,并且建模的前提一定是基于某个领域的特点问题域,不同的领域,不同的问题域,同一个概念建立的模型是不同的。
2.软件系统复杂度的来源
软件系统的开发分建模和设计两个阶段
所以软件系统的复杂性就来源于两个阶段:
(1)业务和领域知识的复杂性导致建模复杂
(2)在实现过程中技术实现引入额外的复杂性
3.DDD核心思想之一:模型分解
DDD提供领域划分和限界上下文这两个工具来划分不同的领域并分别实现,达到降低系统复杂度的效果
4.DDD核心思想之二:模型驱动设计
学习心得:
因为是课程刚开始,并没有特别难的问题,但是有两个思想让我形成了一个很强的建模感:
(1)建模必须基于某领域的特点问题域而言。
(2)软件的复杂性来源于两点,一是业务领域知识本身的复杂性,二是技术实现过程中,因为技术引入的额外的复杂性。