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


我们来看一下上面这张图。这个例子是在讲如何给桃树建立一个完整的生物学知识体系。初中生物课其实早就告诉我们研究方法了。它的研究过程是这样的。第一步:确定研究对象,即研究领域,这里是一棵桃树。第二步:对研究对象进行细分,将桃树细分为器官,器官又分为营养器官和生殖器官两种。其中营养器官包括根、茎和叶,生殖器官包括花、果实和种子。桃树的知识体系是我们已经确定要研究的问题域,对应 DDD 的领域。根、茎、叶、花、果实和种子等器官则是细分后的问题子域。这个过程就是 DDD 将领域细分为多个子域的过程。第三步:对器官进行细分,将器官细分为组织。比如,叶子器官可细分为保护组织、营养组织和输导组织等。这个过程就是 DDD 将子域进一步细分为多个子域的过程。第四步:对组织进行细分,将组织细分为细胞,细胞成为我们研究的最小单元。细胞之间的细胞壁确定了单元的边界,也确定了研究的最小边界。这里先剧透一点聚合、聚合根、实体以及值对象的内容,我还会在 [第 04 讲] 和 [第 05 讲] 中详细讲解。我们知道细胞核、线粒体、细胞膜等物质共同构成细胞,这些物质一起协作让细胞具有这类细胞特定的生物功能。在这里你可以把细胞理解为 DDD 的聚合,细胞内的这些物质就可以理解为聚合里面的聚合根、实体以及值对象等,在聚合内这些实体一起协作完成特定的业务功能。这个过程类似 DDD 设计时,确定微服务内功能要素和边界的过程。这里总结一下,就是说每一个细分的领域都会有一个知识体系,也就是 DDD 的领域模型。在所有子域的研究完成后,我们就建立了全域的知识体系了,也就建立了全域的领域模型。上面我们用自然科学研究的方法,说明了领域可以通过细分为子域的方法,来降低研究的复杂度。现在我们把这个话题再切换到业务领域,对比验证下,二者的细分过程是否是一致的。这里以我从事的保险行业为例。保险是个比较大的领域,很早以前的保险核心系统把所有的功能都放在一个系统里来实现,这个系统就是我们常说的单体系统。后来单体系统开始无法适应保险业务的发展,因此保险公司开始了中台转型,引入分布式微服务架构来替换原来的单体系统。而分布式微服务架构就需要划分业务领域边界,建立领域模型,并实现微服务落地了。为实现保险领域建模和微服务建设,我们可以根据业务关联度以及流程边界将保险领域细分为:承保、收付、再保以及理赔等子域,而承保子域还可以继续细分为投保、

02 | 领域、子域、核心域、通用域和支撑域相关推荐

  1. 02 | 领域、子域、核心域、通用域和支撑域:傻傻分不清?

    目录 如何理解领域和子域? 如何理解核心域.通用域和支撑域? 那为什么要划分核心域.通用域和支撑域,主要目的是什么呢? 总结 DDD 的知识体系提出了很多的名词,像:领域.子域.核心域.通用域.支撑域 ...

  2. 怎么划分领域、子域、核心域、通用域和支撑域

    怎么划分领域.子域.核心域.通用域和支撑域 如何理解领域和子域? 什么是领域 什么是子域 怎么划分领域和子域 如何理解核心域.通用域和支撑域? 为什么要划分核心域.通用域和支撑域 总结 DDD 的知识 ...

  3. 域控-笔记二(域权限,域组,域管理,Kerberso 协议)

    文章目录 一. 域环境搭建 1.1 添加AD功能 1.2 安装 1.3 部署 二. 如何加入域 2.1 加入域 2.2 域中主机登录 2.3 退出域 2.4 添加域用户 三. 域权限 3.1 A-G- ...

  4. 整车域控制器的经典五域

    讲到这个问题先讲讲,什么是域控制器.域控制器的概念是伴随着整车电子电器架构的发展演变而来的.由于整车电子电器的日益复杂,传统的分布式架构已经无法满足日益增长的计算需求,也导致冗长的线束. 根据 201 ...

  5. 域安全(1)域的基本知识

    1.相比于传统的渗透测试,红队的攻击较为接近真实的入侵活动  红队是不择手段的,渗透测试是限定方法的 2.很多攻击手段都不是完全孤立的,而是连动化攻击 3.熟练掌握工具只是一小部分,各种原理的深度理解 ...

  6. html 跨域_常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

  7. 常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

  8. 复旦大学提出《Meta-FDMixup》解决跨域小样本学习中的域偏移问题

    关注公众号,发现CV技术之美 这篇文章『Meta-FDMixup: Cross-Domain Few-Shot Learning Guided by Labeled Target Data』是 ACM ...

  9. 什么是跨域及怎么解决跨域问题?

    什么是跨域? 这篇博文解释的挺清楚,我直接引用 什么是跨域?怎么解决跨域问题?_L瑜-CSDN博客_跨域是什么意思 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加 ...

最新文章

  1. Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
  2. 四肢切割_四肢瘫痪者用大脑信号和先进的假肢完成吃饭动作
  3. 想要升职加薪?先管理好时间与目标!
  4. python基本输入输出函数有_新手学Python,输入输出函数、赋值语句常见5个错误,弄懂即过关...
  5. java统计词频算法_java实现的统计字符算法示例
  6. 斯坦福大学机器学习第四课“逻辑回归(Logistic Regression)”
  7. Mac入门--Apache/Php/Mysql的开启关闭
  8. 艾泰路由器设置虚拟服务器,艾泰路由器设置步骤
  9. 无类别地址CIDR概述
  10. 区分大小屏幕_第一个Python程序——在屏幕上输出文本
  11. Facebook升级到MySQL 8.0付出的代价
  12. STM32H743+CubeMX-串口非空闲中断接收
  13. Linux串口编程(中断方式和select方式)
  14. 1091 N-自守数 (15分)
  15. X-UA-Compatible 解决IE浏览器样式不兼容问题
  16. 关于MongoDB时区问题
  17. MyEclipse问题收集
  18. 我们学校有一个计算机室英文,深圳朗文版小学二年级下册Unit 2 At school练习题...
  19. 英特尔傲腾内存linux,英特尔一面优化傲腾可持续内存性能 一面不忘科普
  20. 【前端面试之缓存】js本地缓存、浏览器缓存、服务器缓存

热门文章

  1. 微信好友删除了怎么找回来
  2. 十二星座分手时会怎么说?
  3. 基于Vue.js模拟酒店预订移动App
  4. 计算机辅助数控编程交互图形,第8章-计算机辅助数控编程.ppt
  5. WIN7系统的主机怎么查询主机的ip地址
  6. pycharm中运行代码
  7. 论文阅读-2022.1.2-A Neural Network Approach for_2016_一种用于知识驱动响应生成的神经网络方法
  8. 【记录】用Python webdriver图书馆抢座自动预约的正确姿势
  9. 关于Oracle 级联操作
  10. 一周侃 | 周末随笔