image.png
    子域也是DDD中的概念, 理解子域和限界上下文的关系至关重要。它们经常被混淆。构建项目时,有两个中心元素:问题和解决方案。问题是我们建立项目的出发点,目的就是解决问题。解决方案是解决问题的产出。所以,它们两者的区别就是,子域属于问题,限界上下文数据解决方案。换句话说,子域问题的一部分,而限界上下文是解决方案的一部分。子域和限界上下文是1对1的关系。理论上,每个子域都对应一个限界上下文,然而实际缺不尽人意。
    image.png
    我们以经典的ERP系统为例,销售子域的新需求如何解决?如果现有代码库不存在自动测试,那恐怕很难在其基础上更改代码。我们可能就会选择新建限界上下文,然后将其和现有限界上下文隔离。最终,一个子域对应了两个限界上下文。上面的例子标明,这两个限界上下文完全可以合并为单个。我们的项目是从零开始的,没有上述的问题。