领域驱动设计-基本概念(二)

一、DDD知识体系提出的名词如下:

领域、子域、核心域、通用域、支撑域、限界上下文、聚合、聚合根、实体、值对象等

二、如何理解领域和子域:

1、领域:(1)用来确定范围的,范围即边界,这也是 DDD 在设计中不断强调边界的原因。

                 (2)简言之,DDD 的领域就是这个边界内要解决的业务问题域。

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

三、一棵桃树的例子

1、确定研究对象,即研究领域,这里是一棵桃树

2、对研究对象进行细分,将桃树细分为器官,器官又分为营养器官和生殖器官两种。其中营养器官包括根、茎和叶,生殖器官包括花、果实和种子。桃树的知识体系是我们已经确定要研究的问题域,对应 DDD 的领域。根、茎、叶、花、果实和种子等器官则是细分后的问题子域。这个过程就是 DDD 将领域细分为多个子域的过程。

3、对器官进行细分,将器官细分为组织。比如,叶子器官可细分为保护组织、营养组织和输导组织等。这个过程就是 DDD 将子域进一步细分为多个子域的过程。

4、对组织进行细分,将组织细分为细胞,细胞成为我们研究的最小单元。细胞之间的细胞壁确定了单元的边界,也确定了研究的最小边界。

在这里可以把细胞理解为 DDD 的聚合,细胞内的这些物质就可以理解为聚合里面的聚合根、实体以及值对象等,在聚合内这些实体一起协作完成特定的业务功能。这个过程类似 DDD 设计时,确定微服务内功能要素和边界的过程。

总结说明:

  1. 每一个细分的领域都会有一个知识体系,也就是 DDD 的领域模型。在所有子域的研究完成后,我们就建立了全域的知识体系了,也就建立了全域的领域模型。
  2. 领域可以通过细分为子域的方法,来降低研究的复杂度。
  3. 领域建模和微服务建设的过程和方法基本类似,其核心思想就是将问题域逐步分解,降低业务理解和系统实现的复杂度。

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

1、领域分为子域,子域根据自身重要性和功能属性,分为:

(1)核心域:决定产品和公司核心竞争力的子域,是业务成功的主要因素和公司的核心竞争力

(2)通用域:没有太多个性化的诉求,同时被多个子域使用的通用功能子域

(3)支撑域:还有一种功能子域是必需的,但既不包含决定产品和公司核心竞争力的功能,也不包含通用功能的子域

2、三类子域比较:

(1)核心域是最重要的

(2)通用域没有企业特点限制,不需要做太多的定制化,对应到企业系统,就是需要用到的通用系统,比如认证、权限等等

(3)支撑域则具有企业特性,但是不具有通用性

3、划分核心域、通用域和支撑域的目的是什么?

(1)例如上例,将桃树细分为根、茎、叶、花、果实和种子等六个子域,哪个是核心域?

(2)不同的人在不同的场景下,对桃树的核心域的理解是不同的

(3)在 IT 系统建设过程中,由于预算和资源有限,对不同类型的子域应有不同的关注度和资源投入策略,记住好钢要用在刀刃上。

(4)商业模式的不同会导致核心域划分结果的不同。有的公司核心域可能在客户服务,有的可能在产品质量,有的可能在物流。在公司领域细分、建立领域模型和系统建设时,我们就要结合公司战略重点和商业模式,找到核心域了,且重点关注核心域。

(5)建议你和你的技术团队要将核心域的建设排在首位,最好是有绝对的掌控能力和自主研发能力,如果资源实在有限的话,可以在支撑域或者通用域上想想办法

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

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值