实体的定义
我们在定义一个概念的时候,常常会说这个概念是由那些部分构成的,按照这个套路来说,实体是由属性和行为组成的,属性指的是实体本身的特质,行为指的实体本身的能力,实体能干什么。
如果一个实体表示的业务概念较大,那么属性和能力就会较多,在描述这个实体是什么的时候,你需要把属性和能力都列举出来,沟通很费力费时。
我们在给领域元素做定义的时候,最好不要采用举例子的方式来解释,也不要用一个复杂名词取解释另外一个名词,最好用一两句直白的话来说明即可,按照这个原则,上述对实体的定义就有一点点问题,我们来重新定义一下实体。
我们认为实体是具有唯一标识的,可以表示业务连续性变化的领域元素。
这里我们一一来解释下两个概念:唯一标识,业务连续性。
唯一标识
如果想避免通过属性+能力的方式来描述实体,我们可以给实体加一个概念:唯一标识,我们可以通过唯一标识来代表实体,这个是我理解实体唯一标识概念的由来,这样沟通的时候,直接用实体的唯一标识沟通会更加方便。
这里的唯一标识 最好是有业务特征的
唯一标识如何确定?
可能是简单一个属性,也可能是多个属性的集合,甚至是一个发号器生成的业务唯一值(如 UUID),唯一标识的确定完全由业务决定,但有两个目标:
- 1:保证唯一代表实体
- 2:保证不变代表实体
达到以上两个目标即可,最好的例子就是人的身份证,不管你的人生发生了什么变化,生老病死,身份证都是唯一并且不变的。
注意:当你的唯一标识是技术发号器生成的时候,比如说是 100,那么在沟通的时候,这个 100 其实是代表了整个实体,并不仅仅只是代表 100 这个值,这个是我们在工作中经常忽略的。