如何理解DDD的领域和子域?
领域是从事一种专门活动或事业的 范围 、部类或 部门。”百度百科对领域的解释:“领域具体指一种特定的范围 或区域。”
两个解释有一个共同点——范围。 对了!领域就是用来确定范围的,范围即边界,这也是
DDD 在设计中不断强调边界的原因。
在研究和解决业务问题时,DDD 会按照一定的规则将业务领域进行细分,当领域细分到一
定的程度后,DDD 会将问题范围限定在特定的边界内,在这个边界内建立领域模型,进而
用代码实现该领域模型,解决相应的业务问题。简言之, DDD 的领域就是这个边界内要解
决的业务问题域。
既然领域是用来限定业务边界和范围的,那么就会有大小之分,领域越大,业务范围就越
大,反之则相反。
领域可以进一步划分为子领域。 我们把划分出来的多个子领域称为子域,每个子域对应一个
更小的问题域或更小的业务范围。
其实很好理解,DDD 的研究方法与自然科学的研究方法类似。当人们在自然科学研究中遇
到复杂问题时,通常的做法就是将问题一步一步地细分,再针对细分出来的问题域,逐个深
入研究,探索和建立所有子域的知识体系。当所有问题子域完成研究时,我们就建立了全部
领域的完整知识体系了。

我们来看一下上面这张图。这个例子是在讲如何给桃树建立一个完整的生物学知识体系。初
中生物课其实早就告诉我们研究方法了。 它的研究过程是这样的。
第一步:确定研究对象,即研究领域,这里是一棵桃树。
第二步:对研究对象进行细分,将桃树细分为器官,器官又分为营养器官和生殖器官两种。
其中营养器官包括根、茎和叶,生殖器官包括花、果实和种子。桃树的知识体系是我们已经
确定要研究的问题域,对应 DDD 的领域。根、茎、叶、花、果实和种子等器官则是细分后
的问题子域。这个过程就是 DDD 将领域细分为多个子域的过程。
第三步:对器官进行细分,将器官细分为组织。比如,叶子器官可细分为保护组织、营养组
织和输导组织等。这个过程就是 DDD 将子域进一步细分为多个子域的过程。
第四步:对组织进行细分,将组织细分为细胞,细胞成为我们研究的最小单元。细胞之间的
细胞壁确定了单元的边界,也确定了研究的最小边界。
这里先剧透一点聚合、聚合根、实体以及值对象的内容,我还会在 [第 04 讲] 和 [第 05 讲]
中详细讲解。
推荐阅读
实现DDD领域驱动