基本概念
领域建模的目的:
- 将知识可视化,准确、深刻地反映领域知识,并且在业务和技术人员之间达成一致;
- 指导系统的设计和编码,也就是说,领域模型应该能够比较容易地转化成数据库模式和代码实现。
领域模型,主要识别领域对象(domain object),领域对象之间的关系,以及领域对象的关键属性。领域模型通常用 UML 来画。
在 UML 中,这个符号叫做**“类”(class)。**比如说,张三是员工,李四也是员工,我们可以说,员工指一类事物。这时我们可以用 UML 中的术语说,**员工是领域对象的一个类,张三和李四是这个类的实例。**在领域建模过程中,我们说领域对象时,有时指类,有时指实例,一般可以通过上下文来区分。此外,DDD 中将领域对象又分成实体(entity)和值对象(value object)。“员工”“账户”等都是实体。
如何识别实体
领域名词入手,分成几部分来建模。
-
识别“一对一”关联(1:1)
-
识别“一对多”关联(1:*)
-
多重性(1:0..*)
进行抽象
带有共性的名词进行抽象
识别“自关联”
一个自己到自己的一对多关联。如:一个组织可以有多个组织作为自己的下级;而一个组织只能有一个组织作为自己的上级
增加“约束”
在 UML 中,用大括号括起来的内容称为“约束”(constraint)。和一般性的注释不同,**凡是约束,必须在程序中的某个地方进行实现。**约束也是一种业务规则
识别“多对多”关联
如:一个员工可以担任多个岗位,而一个岗位也可以有多个员工担任。员工和岗位之间是“多对多”关联。
更丰富的“多重性”
参考:【手把手教你落地 DDD-钟敬】