comparemela.com
Home
Live Updates
识别实体与值对象的特征 : comparemela.com
识别实体与值对象的特征
注意:在进行相等性判断时,不能将作为唯一标识的ID视为领域模型的属性。
例如地址领域概念,只要其属性值国家、省份、城市、街道与邮政编码相等,就可以认为是同一个地址,应将Address类定义为值对象。对于大家耳熟能详的订单领域概念,显然需要为其分配一个唯一的订单编号,因为理论上可能存在除订单编号外其他属性都相同的两个不同订单,应将Order定义为实体。
然而,在对相等性进行判断时,可能出现ID与属性存在一种隐含的对应关系。例如,出版行业中作为正规出版物的图书,具有唯一的ISBN号,它相当于是图书领域概念的ID,所以Book应定义为实体。可在对Book相等性进行判断时,也可以不通过ISBN进行相等性判断,基本上,只要书名、作者(译者)、出版社、价格、出版日期、版次、页数、字数等属性值相同,也可以认为是同一本书,那是否意味着可以将Book定义为值对象呢?
显然,在进行相等性判断时,考虑的属性越多,就会出现多个组合的属性形成一种“隐藏”的唯一标识特征,有一些体现业务规则的ID,自身就是根据属性值来定义的。例如,航班的唯一标识就可以根据承运公司二字码、航班号、起降机场三字码与执飞日期来决定。通过唯一标识固然可以决定是否同一个航班,根据映射的多个属性值,也可以判断相等性。这会让人在甄别实体与值对象时,显得摇摆不定。例如,腾讯会议的会议号是Meeting的身份标识,在比较会议的相等性时,倘若我们考虑了除会议号之外的其他属性,如会议名称、会议类型、开始时间、结束时间、创建人、创建时间等属性,不一样可以确定会议的相等性吗?
因此,除了判断相等性,还需考虑不变性。
Related Keywords
China
,
Vietnam
,
Republic Of
,
India
,
,
It Division
,
Press Price
,
China Lunar New Year
,
சீனா
,
வியட்நாம்
,
குடியரசு ஆஃப்
,
இந்தியா
,
அது பிரிவு
,
சீனா சந்திர புதியது ஆண்டு
,
comparemela.com © 2020. All Rights Reserved.