DDD领域驱动设计二、基础概念

领域、子域、核心域、通用域、支撑域、通用语言、限界上下文、聚合、聚合根、实体、值对象、领域事件、事件风暴等等,非常多。这些名词,都是关键概念,它们非常抽象难以理解,但却又很重要,是理解 DDD 的核心设计思想和理念的基础。

一、领域和子域

不管是在软件开发中还是在研究其他问题的时候,我们都可以把复杂问题根据某些特性拆分成多个子问题,每个问题只在特定的范围或区域内研究,这个特定的范围或区域就可以称为领域

当一个领域的问题还是很复杂的时候,我们可以继续拆分,拆分出来的子领域研究的范围或区域就称为 子领域

这样的例子有很多,例如,我们研究植物的时候,可以把植物拆分成两大领域:营养器官和生殖器官。

营养器官又分为:根、茎、叶三个子领域;生殖器官分为:花、果实、种子三个子领域。

在这里插入图片描述

当然各个器官还是可以再继续划分,这就是划分子域的过程。

二、解核心域、通用域和支撑域

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

1、决定产品和公司核心竞争力的子域是核心域,它是业务成功的主要因素和公司的核心竞争力,所以可以多投入一些资源。

2、没有太多个性化的诉求,同时被多个子域使用的通用功能子域是通用域,比如认证、权限等等,这类应用很容易买到,没有企业特点限制,不需要做太多的定制化。

3、还有一种功能子域是必需的,但既不包含决定产品和公司核心竞争力的功能,也不包含通用功能的子域,它就是支撑域,例如数据代码类的数据字典等系统。

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

三、通用语言和限界上下文

在 DDD 领域建模和系统建设过程中,会有很多不同的角色参与进来,包括领域专家、产品经理、项目经理、架构师、开发经理和测试经理等,不同角色对同一个东西可能会有不同叫法,或者有不同的理解。这样交流起来就有障碍,通用语言和限界上下文就是来解决这样的问题的。

1、通用语言

在事件风暴过程中,通过团队交流达成共识的,能够简单、清晰、准确描述业务涵义和规则的语言就是通用语言

确定了通用语言之后,在同个界限上下文中,任何人对同一个东西只能叫同一个名字,包括产品做需求分析和程序员写代码都用一样的名字。

这就和秦王扫六合,统一了全国的计量单位有类似的作用。

DDD 分析和设计过程中的每一个环节都需要保证限界上下文内术语的统一,在代码模型设计的时侯就要建立领域对象和代码对象的一一映射,从而保证业务模型和代码模型的一致,实现业务语言与代码语言的统一。

2、限界上下文(bounded context)

我们知道语言都有它的语义环境,同样一句话在不同的语境下可能是不同的意思,例如:能穿多少穿多少,在不同语境下说这句话会是完全相反的意思。为了避免同样的概念或语义在不同的上下文环境中产生歧义,DDD 在战略设计上提出了“限界上下文”这个概念,用来确定语义所在的领域边界。

我们可以将限界上下文拆解为两个词:限界和上下文。限界就是领域的边界,而上下文则是语义环境。通过领域的限界上下文,我们就可以在统一的领域边界内用统一的语言进行交流。

限界上下文用来封装通用语言和领域对象,提供上下文环境,保证在领域之内的一些术语、业务相关对象等(通用语言)有一个确切的含义,没有二义性。这个边界定义了模型的适用范围,使团队所有成员能够明确地知道什么应该在模

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值