如何理解领域和子域?
人保高级架构师
讲述:丁婵大小:2.29M时长:05:01
DDD 的知识体系提出了很多名词,像领域、子域、核心域、通用域、支撑域、限界上下文、聚合、聚合根、实体、值对象等等,非常多。
这些名词,都是关键概念,但它们实在晦涩难懂。而这些思想和理念,在 IT 战略设计、业务建模和微服务设计中都是可以借鉴的。近日,极客时间专栏作者欧创新在其专栏《DDD 实战课》中分享了 DDD 的领域、子域、核心域、通用域和支撑域等重要概念,帮助开发者更好地区分它们。
如何理解领域和子域?
汉语词典中对领域的解释为:领域是从事一种专门活动或事业的范围、部类或部门。百度百科对领域的解释为:领域具体指一种特定的范围或区域。
可以发现,两个解释有一个共同点:“范围”。领域就是用来确定范围的,范围即边界,这也是 DDD 在设计中不断强调边界的原因。
在研究和解决业务问题时,DDD 会按照一定的规则将业务领域进行细分,当领域细分到一定的程度后,DDD 会将问题范围限定在特定的边界内,在这个边界内建立领域模型,进而用代码实现该领域模型,解决相应的业务问题。简言之,DDD 的领域就是这个边界内要解决的业务问题域。
既然领域是用来限定业务边界和范围的,那么就会有大小之分,领域越大,业务范围就越大,反之则相反。
领域可以进一步划分为子领域。而划分出来的多个子领域就称为子域,每个子域对应一个更小的问题域或更小的业务范围。
众所周知,DDD 是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂度。那么面对错综复杂的业务领域,DDD 是如何使业务从复杂变得简单,更容易让人理解,技术实现更容易呢?
其实很好理解,DDD 的研究方法与自然科学的研究方法类似。当人们在自然科学研究中遇到复杂问题时,通常的做法就是将问题一步一步的细分,再针对细分出来的问题域,逐个深入研究,探索和建立所有子域的知识体系。当所有问题子域完成研究时,人们就建立了全部领域的完整知识体系了。
举个例子,如何给桃树建立一个完整的生物学知识体系。它的研究过程是这样的。
第一步:确定研究对象,即研究领域,这里是一棵桃树。
第二步:对研究对象进行细分,将桃树细分为器官,器官又分为营养器官和生殖器官两种。其中营养器官包括根、茎和叶,生殖器官包括花、果实和种子。桃树的知识体系是已经确定要研究的问题域,对应 DDD 的领域。根、茎、叶、花、果实和种子等器官则是细分后的问题子域。这个过程就是 DDD 将领域细分为多个子域的过程。
第三步:对器官进行细分,将器官细分为组织。比如,叶子器官可细分为保护组织、营养组织和输导组织等。这个过程就是 DDD 将子域进一步细分为多个子域的过程。
第四步:对组织进行细分,将组织细分为细胞,细胞成为人们研究的最小单元。细胞之间的细胞壁确定了单元的边界,也确定了研究的最小边界。
在这里你可以把细胞理解为 DDD 的聚合,细胞内的细胞核、线粒体、细胞膜等物质相当于聚合根,它们一起协作完成特定的业务功能。这个过程类似 DDD 设计时,确定微服务内功能要素和边界的过程。
用自然科学研究的方法,说明领域可以通过细分为子域的方法,来降低研究的复杂度。换到业务领域,二者的细分过程也是一致的。不同行业的业务模型可能会不一样,但领域建模和微服务建设的过程和方法基本类似,其核心思想就是将问题域逐步分解,降低业务理解和系统实现的复杂度。
现在你应该清楚领域和子域的区别和功能了,接下来可以了解核心域、通用域、支撑域之间关联,以更好地区分它们。受限于篇幅,这部分内容将在下文继续分享,欢迎持续关注。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论