首頁>技術>

一、聚合根、實體、值物件的區別?

1. 從標識的角度:

聚合根具有全域性的唯一標識,而實體只有在聚合內部有唯一的本地標識,值物件沒有唯一標識,不存在這個值物件或那個值物件的說法。

2. 從是否只讀的角度:

聚合根除了唯一標識外,其他所有狀態資訊都理論上可變;實體是可變的;值物件是隻讀的;

3. 從生命週期的角度:

聚合根有獨立的生命週期,實體的生命週期從屬於其所屬的聚合,實體完全由其所屬的聚合根負責管理維護;值物件無生命週期可言,因為只是一個值;

二、聚合根、實體、值物件物件之間如何建立關聯?

聚合根到聚合根:透過ID關聯;

聚合根到其內部的實體,直接物件引用;

聚合根到值物件,直接物件引用;

實體對其他物件的引用規則:1)能引用其所屬聚合內的聚合根、實體、值物件;2)能引用外部聚合根,但推薦以ID的方式關聯,另外也可以關聯某個外部聚合內的實體,但必須是ID關聯,否則就出現同一個實體的引用被兩個聚合根持有,這是不允許的,一個實體的引用只能被其所屬的聚合根持有;

值物件對其他物件的引用規則:只需確保值物件是隻讀的即可,推薦值物件的所有屬性都儘量是值物件;

三、如何識別聚合與聚合根?

明確含義:一個Bounded Context(限界上下文)可能包含多個聚合,每個聚合都有一個根實體,叫做聚合根;

識別順序:先找出哪些實體可能是聚合根,再逐個分析每個聚合根的邊界,即該聚合根應該聚合哪些實體或值物件;最後再劃分Bounded Context;

聚合邊界確定法則:根據不變性約束規則(Invariant)。不變性規則有兩類:1)聚合邊界內必須具有哪些資訊,如果沒有這些資訊就不能稱為一個有效的聚合;2)聚合內的某些物件的狀態必須滿足某個業務規則;

42
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 訓練樣本不足?一文搞懂Relation Net小樣本學習