领域驱动设计:领域、子域、核心域、通用域和支撑域 领域的意思

领域含义(领域驱动设计:领域、子域、核心领域、通用领域和支持领域)
DDD的知识体系提出了域、子域、核心域、一般域、支撑域、有界上下文、聚合、聚合根、实体、价值对象等多个名词 。这些名词都是很关键的概念 , 但是有点晦涩 , 可能会导致你在开始练DDD之前就退缩了 。所以在基础一章 , 希望带大家一起做练习前的准备工作 。
除此之外 , 我想说的是 , 这些名词在你的微服务设计和开发过程中可能不会用到 , 但是它们可以帮助你理解DDD的核心设计思想和概念 。这些思路和概念可以在IT战略设计、业务建模和微服务设计中借鉴 。
今天 , 我们重点介绍DDD的重要概念 , 如域、子域、核心域、一般域和支持域 。
如何理解域和子域?我们先来看看汉语词典中对领域的解释:“领域是从事某一特殊活动或事业的范围、部门或部门 。”百度百科对领域的解释:“领域特指特定的范围或区域 。”
这两种解释有一个共同点——范围 。没错 。域是用来确定范围的 , 也就是范围就是边界 , 这也是DDD在设计中不断强调边界的原因 。
在研究和解决业务问题时 , DDD会按照一定的规则对业务领域进行细分 。当领域细分到一定程度时 , DDD会将问题的范围限定在一个特定的边界内 , 在这个边界内构建一个领域模型 , 然后用代码实现领域模型来解决相应的业务问题 。简而言之 , DDD的领域就是在这个边界内需要解决的商业问题的领域 。
由于域用于限制业务边界和范围 , 因此大小和规模之间会有区别 。领域越大 , 业务范围越大 , 反之亦然 。
该域可以进一步划分为子域 。我们把划分的子域称为子域 , 每个子域对应一个较小的问题域或较小的业务范围 。
众所周知 , DDD是一个处理高度复杂领域的设计理念 , 它试图将技术实现的复杂性分离出来 。那么 , 面对复杂的业务领域 , DDD如何让业务从复杂变得简单 , 更容易理解 , 更容易实现呢?
事实上 , 众所周知 , DDD的研究方法类似于自然科学的研究方法 。当人们在自然科学研究中遇到复杂的问题时 , 通常的做法是将问题逐步细分 , 然后针对细分后的问题领域 , 逐一进行深入研究 , 探索建立所有子领域的知识体系 。当所有的问题子域都研究完了 , 我们就建立了一个完整的各个领域的知识体系 。
这个领域需要细分 。
初中生物课上给我们讲了桃树的研究过程:
第一步:确定研究对象 , 即研究领域 , 这里是桃树 。
第二步:细分研究对象 , 将桃树细分为器官 , 分为营养器官和生殖器官 。营养器官包括根、茎和叶 , 生殖器官包括花、果实和种子 。桃树的知识体系是我们决定研究的问题域 , 与DDD的领域相对应 。根、茎、叶、花、果实、种子等器官被细分为问题子域 。这个过程就是DDD把域细分为多个子域的过程 。
第三步:将器官细分为组织 。例如 , 叶器官可细分为保护组织、营养组织和传导组织 。这个过程是DDD进一步将子域细分为多个子域的过程 。
第四步:将组织细分为细胞 , 细胞成为我们研究的最小单位 。细胞间的细胞壁决定了细胞的边界和研究的最小边界 。
我们知道细胞核、线粒体、细胞膜等物质共同构成细胞 , 而这些物质共同作用使细胞具有这些细胞特有的生物学功能 。在这里 , 你可以把单元理解为DDD的聚合 , 单元中的这些物质可以理解为聚合中的聚合根、实体和价值对象 , 这些实体在其中协同工作 , 完成特定的业务功能 。这个过程类似于DDD设计中确定微服务的功能元素和边界的过程 。
这里总结一下 , 就是说每个细分的领域都会有一个知识体系 , 也就是DDD的领域模型 。在完成所有子域的研究后 , 我们建立了一个全局知识体系 , 这意味着我们建立了一个全局域模型 。
用自然科学研究的方法 , 我们解释了领域可以细分为子域 , 以降低研究的复杂性 。现在把这个话题切换到业务领域 , 对比验证两者的细分过程是否一致 。以保险业为例 。

推荐阅读