什么是领域模型 ?
领域 :软件程序是为了执行用户的某项活动,或是满足用户的某种需求,这些问题区域就是软件的领域。例如机票预订程序领域的中包括飞机的乘客。
模型 :为了创建真正能为用户活动所用的软件,开发团队必须运用一套与这些活动有关的知识体系。所需的知识的广度可能令人望而生畏,庞大的信息也可能超会想象。模型这种知识形式对知识进行了选择性的简化和有意的结构化。适当的模型可以使人理解信息的意义,并专注问题。
领域模型:就是为了解决描述领域里复杂问题,而抽象出来的模型。
领域专家:一个领域里的专家,例如物流控制软件中的物流管理人员,注意。PM不是领域专家。
模型在领域驱动设计中的作用
- 模型和设计的核心相互影响。
- 模型是团队所有成员使用的通用语言中枢。
- 模型是浓缩的知识
如何有效建模 ?
- 模型和实现的绑定
好的程序员会自然而然的抽象并开发出一个可以完成更多工作的模型,但是如果建模时只是技术人员唱独角戏,而没有领域专家的协作,那么得到的概念将是很幼稚的。使用这些肤浅的知识开发出来的软件只能做基本工作,而无法充分反映出领域专家的思考方式
- 建立一种基于模型的语言
基于模型建立一套领域模型语言,基于领域模型语言进行沟通,可以有效的明白领域专家描述的领域问题,领域专家也可以从程序员的描述里理解到软件的设计
- 开发一个蕴含丰富知识的模型
当我们的建模不再局限于寻找实体和值对象时,我们才能充分的吸取知识,因为业务规则之间可能存在不一致。领域专家在反复的提出需求,修改需求是根据日常知识来进行设计的,他们往往意识不到自己的思路有多复杂。软件是无法实现的。 为了解决此类问题,程序员必须与领域专家紧密协作来消化知识,丰富模型,解除矛盾。
- 提炼模型
有用的模型很少停留在表面,随着对领域和需求的逐步理解和加深,我们往往会丢弃那些最初看起来很重要的表面要素,或者切换它们的角度。这时一开始可能发现不了的巧妙抽象就会浮出水面,而它们恰恰切中要害。