第15章 精炼
上章我们讲到领域层被分割成一个个BOUNDED CONTEXT,构建出了CONTEXT MAP,并介绍了各个CONTEXT的关系。做任何事情,都要抓住主要矛盾,进行领域驱动设计也是。我们需要通过精炼,得到CORE DOMAIN(核心领域)。围绕核心领域展开分析。核心领域可能包含几个CONTEXT,也肯能只包含一个CONTEXT,甚至可能只是CONTEXT的一部分(如上章讲的SHARED KERNEL)。
精炼是把一堆杂乱在一起的组件分开的过程,以便通过某种形式从中提取出最重要的内容。就像蒸馏过程一样。精炼把最有价值的那部分提出取出来。这个部分使我们的软件区别于其他软件,并使整个软件产生价值。这个部分就是CORE DOMAIN。
精炼过程所分离出来的副产品也有一定的价值,比如本章将介绍的GENERIC SUBDOMAIN和COHERENT MECHANISM。
本章为了更好的说清楚各部分的关系,我将相关概念的顺序调整一下,不完全按照书中的顺序进行介绍。
15.1 如何提炼CORE DOMAIN
15.1.1找准方向
通过DOMAIN VISION STATEMENT(领域愿景说明) 和 HIGHLIGHTED CORE(突出核心),找准核心领域的提炼方向。
DOMAIN VISION STATEMENT(领域愿景说明)
作者在书中提到“很多团队都会编写‘愿景说明’,愿景说明展示了应用程序为组织带来的具体价值”。他这里提到的“愿景说明”,大家可以理解为项目的目标,是一个非常宏观的概念。比如,“便于中小企业融资”这个目标。一些愿景说明文档在项目启动以后就弃之不用了,而在实际开发中也不会使用他,甚至根本不会有技术人员去阅读它。DOMAIN VISION STATEMENT(领域愿景说明)就是模仿这类文档创建的,但他关注的重点是领域模型的本质。在项目开发的所有阶段,管理层和技术人员都可以直接用领域远景说明来指导资源分配、建模选择和团队成员的培训。如果领域模型为多个群里提供服务,那么此文档还能够显示出各个群里的利益使如