2.1 领域
词典中对领域的解释:“领域是从事一种专门活动或事业的范围、部类或部门。”百科对领域的解释:“领域具体指一种特定的范围或区域。”两个解释有一个共同点——范围。
领域就是用来确定范围的,范围即边界,这也是 DDD 在设计中不断强调边界的原因。
2.2 子域
既然领域是用来限定业务边界和范围的,那么就会有大小之分,领域越大,业务范围就越大,反之则相反。领域可以进一步划分为子领域。我们把划分出来的多个子领域称为子域,每个子域对应一个更小的问题域或更小的业务范围。<br /> DDD 的研究方法与自然科学的研究方法类似。当人们在自然科学研究中遇到复杂问题时,通常的做法就是将问题一步一步地细分,再针对细分出来的问题域,逐个深入研究,探索和建立所有子域的知识体系。当所有问题子域完成研究时,我们就建立了全部领域的完整知识体系了。
2.3 核心域
**决定产品和公司核心竞争力的子域是核心域**,它是业务成功的主要因素和公司的核心竞争力。<br /> 拿上图的桃树来说吧。我们将桃树细分为了根、茎、叶、花、果实和种子等六个子域,那桃树是否有核心域?有的话,到底哪个是核心域呢?不同的人对桃树的理解是不同的。<br /> 如果这棵桃树生长在公园里,在园丁的眼里,他喜欢的是“人面桃花相映红”的阳春三月,这时花就是桃树的核心域。<br /> 但如果这棵桃树生长在果园里,对果农来说,他则是希望在丰收的季节收获硕果累累的桃子,这时果实就是桃树的核心域。
2.4 通用域
没有太多个性化的诉求,同时被多个子域使用的通用功能子域是通用域。<br /> 举例来说的话,通用域则是你需要用到的通用系统,比如认证、权限等等,这类应用很容易买到,没有企业特点限制,不需要做太多的定制化。
2.5 支撑域
功能子域是必需的,但既不包含决定产品和公司核心竞争力的功能,也不包含通用功能的子域,它就是支撑域。<br /> 例如数据代码类的数据字典等系统。