DDD 的领域、子域、核心域、通用域和支撑域等重要概念

如何理解领域和子域?

领域

领域是用来限定业务边界和范围的,这也是 DDD 在设计中不断强调边界的原因。

在研究和解决业务问题时,DDD 会按照一定的规则将业务领域进行细分,当领域细分到一定的程度后,DDD 会将问题范围限定在特定的边界内,在这个边界内建立领域模型,进而用代码实现该领域模型,解决相应的业务问题。简言之,DDD 的领域就是这个边界内要解决的业务问题域。

子领域

领域可以进一步划分为子领域。我们把划分出来的多个子领域称为子域,每个子域对应一个更小的问题域或更小的业务范围。

面对错综复杂的业务领域,DDD 是如何使业务从复杂变得简单,更容易让人理解,技术实现更容易呢?

通常的做法就是将问题一步一步地细分,再针对细分出来的问题域,逐个深入研究,探索和建立所有子域的知识体系。当所有问题子域完成研究时,我们就建立了全部领域的完整知识体系了。

1、确定研究对象,即研究领域

这里是一棵桃树 

2,细分

对桃树进行细分,细分为器官:营养器官和生殖器官两种。

营养器官:根、茎和叶,

生殖器官:花、果实和种子

3,子域进一步细分为多个子域

对器官进行细分,将器官细分为组织。比如,叶子器官可细分为保护组织、营养组织和输导组织等

4,对组织进行细分,将组织细分为细胞,细分到研究的最小单元。

领域知识总结

问题域:桃树

问题子域:根、茎、叶、花、果实和种子

子域再细分为多个子域:叶子器官 可细分为保护组织、营养组织和输导组织

细分到研究的最小单元:细胞

聚合:细胞(包含细胞核、线粒体、细胞膜)

聚合根、实体以及值对象:细胞核、线粒体、细胞膜

如何理解核心域、通用域和支撑域?

在领域不断划分的过程中,领域会细分为不同的子域,子域可以根据自身重要性和功能属性划分为三类子域,它们分别是:核心域、通用域和支撑域。

决定产品和公司核心竞争力的子域是核心域。

同时被多个子域使用的通用功能子域是通用域。

是必需的,但既不包含决定产品和公司核心竞争力的功能,也不包含通用功能的子域,它就是支撑域。

总结

领域的核心思想就是将问题域逐级细分,来降低业务理解和系统实现的复杂度。通过领域细分,逐步缩小微服务需要解决的问题域,构建合适的领域模型,而领域模型映射成系统就是微服务了。

核心域、支撑域和通用域的主要目标是:通过领域划分,区分不同子域在公司内的不同功能属性和重要性,从而公司可对不同子域采取不同的资源投入和建设策略,其关注度也会不一样。 

你可能感兴趣的:(ddd,ddd)