1.什么是领域
相信大家都看过修真类的小说,动不动就说到达了某种境界,就可以开启领域,那么领域是什么呢?
开启领域之后,那么是不是主角就非常nb了,瞬时间威力大涨,有种天大地大,我是老大的感觉。
说白了就是在一定的范围内,我说了算,仙人之下我无敌,仙人之上,我还是老大。
既然收了范围,不得不说的一个词就是边界,领域就是用来确定范围的,范围即边界,这也是DDD在设计中不断强调边界的原因。
2. 子域
领域的范围是很大的,太大就要分而治之,我们把划分出来的多个子领域称为子域,每个子域对应一个更小的问题域或更小的业务范围。我们知道,DDD是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂度。把难题分解,然后逐一击破。
3.核心域,通用域,支撑域
在领域不断划分的过程中,领域会细分为不同的子域,子域可以根据自身重要性和功能属性划分为三类子域,它们分别是:核心域、通用域和支撑域。
借用其他大佬的解释为:
核心域 :其所体现的是核心服务,是代表着产品的核心竞争力。
通用域 :其所体现的中间件服务或第三方服务。本身可以通过现有的解决方案集成来完成的服务。
支撑域 :其所体现的是支撑服务,没它不行,但又达不到核心的价值,围绕着产品内部所需要,但又不能单独变更为第三方服务,即它不是一个通用的服务。
而从不同角度看,三者会存在不同的定位。
比如一颗苹果树,在果农眼里苹果能吃,能立马获得价值,那么果实就是核心域。
而对于蜜蜂来看,开花了,很漂亮,能采蜜了,那么花就是核心域。
那么对于一些枝干,茎叶在一定的时候就会被修剪了,他们也就是支撑域和通用域,这么举例不是说这2个不重要,可有可无的。
这么说吧,对于咱们工程师来说,一个项目创建完了,那么一些通用的功能,比如工具类,权限验证这类就是通用域,而支撑域则具有企业特性,但不具有通用性,例如数据代码类的数据字典等系统。
核心域、支撑域和通用域的主要目标是:通过领域划分,区分不同子域在公司内的不同功能属性和重要性,从而公司可对不同子域采取不同的资源投入和建设策略,其关注度也会不一样。
好了,以上就是DDD模型中域的解释了