对象结构
根對象:領域模型中的聚合根。代表了領域模型中一個完整的領域概念,如訂單。
?
子對象:從屬于另一個對象(父對象),是父對象的一部分。子對象的生命周期小于等于父對象的生命周期,如訂單項。
?
友元對象(獨創概念):被另一個對象引用的對象稱之為友元對象。兩個對象之間不存在父子關系,如訂單項引用商品,訂單引用客戶。原則上,友元對象不應受引用友元對象的對象的約束。但根據業務規則,友元對象向外提供規則接口,其它對象可在規則接口基礎上掛接業務規則,以影響友元對象的增刪查改。 引用友元對象的對象保持友元對象的一個主鍵甚至更多信息。保持友元對象的部分信息是為了使在友元對象在被修改或刪除時,保持對象在引用時的完整性,如商品價格,訂單項記錄的商品價格是在引用商品時的當時價格,即使商品已經刪除,訂單項也仍然知道當時選擇的是什么商品。
?
友元對象代理: 通過引用友元對象的對象中保持的友元對象的信息,創建一個友元對象的代理對象,友元對象代理解決了友元對象延時獲取的問題,只有在調用到友元對象的業務方法或其他信息時,才獲取友元對象,而友元對象代理上的信息也保證了必要信息及對象結構的完整性。
?
===========================================================
2010-5-7
友元對象,僅僅是一個用來說明對象圖中對象關系的一個概念,就象子對象、父對象等關系,對實現上沒有特別限定與要求。友元對象代理,這是針對友元對象在倉儲方面而提出的,即使用增加數據庫的冗余度,來減少數據庫的訪問次數。也就是說,在使用友元對象的對象的數據存儲表中保存友元對象的主鍵及其它一些關鍵信息,使用這些信息在對象被讀取時,生成一個友元對象的代理,這個代理包含了這些信息,當真正需要使用友元對象的業務及其它一些信息時,才真正讀取友元對象,并替換掉代理。
這說明,在真正領域建模時,描述的是對象圖,模型之間的關系,它們是純粹的。如果內存夠大,CPU夠快,又不需要網絡之間的序列化或數據交換,也不會當機停電之類的,那么也就可以不用倉儲,也就沒有什么延時加載之類的說法。所以,在設計實現領域模型時,應該是純粹的,至少盡量不受外界環境污染,為適應外界環境而提出的概念、開發的框架,是對領域模型的輔助,不應該影響領域模型。所以友元對象代理,是為解決頻繁數據訪問的,它不應該成為領域模型概念的一部分,它最多只倉儲框架中實現的一部分。
轉載于:https://www.cnblogs.com/stwyhm/archive/2010/04/23/1719007.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: alternatives命令使用方法
- 下一篇: Properties 类的使用