對值物件的理解
DDD中實體物件與值物件的解釋比較抽象。 主要根據持續性與ID識別來區分。
但ID並非某一元素的直觀自然屬性, 而是經過分析建模之後確定了實體類,然後賦給實體類來達到跟蹤,區別,儲存目的的一個特值。 而在分析之前,如何判斷一個概念是否有ID,這才是難點。
結合專案實踐及DDD一書中的理論,感覺應該從以下幾方面分析:
1. 某一概念是主動還是從屬性的。如果是從屬性的,且這種從屬性的生命週期嚴格依賴於某實體,如可以考慮成為值物件的候選。
2. 某一概念是否可以被複用,共享,複製。象對應領域屬性,規格,策略,規則的類,雖然對其他實體類的依賴性不是很強,可以獨立存在。可以被不同的實體物件(不是指類)共享,複製,複用。如人的地址屬性, 畫筆的顏色字型屬性,語言級別如string字串。
3. 值物件建立後的作用:
3.1 往往是做為臨時物件來進行計算,得出同型別的新值物件。來給實體物件業務使用。如建立查詢標準這一臨時物件,將此查詢標準與其他查詢標準組合,生成新查詢標準, 給業務應用來進行過濾或查詢。
3.2 建立做為臨時物件來作為實體的業務行為的一個引數,以給業務行為提供驗證檢驗稽核某一規則或是特徵之用
3.3 值物件提供的一些組合方法一般滿足閉包特徵:即 vo.add(VO anotherVO),vo.minus(VO anotherVO)都反回另一值物件。
4. 值物件的儲存和與其相關聯的實體類儲存,由實體類來負責實體類的儲存。透過設定實體對類與值類的級聯關係。來達到實體類負責值物件的儲存管理。
對於banq舉例jj3中的 forumState為值物件,我存在疑問,因為forumState應該需要儲存吧?比如某一時期的最高發貼數(這隻屬推測,JJ3原始碼的閱讀正在日程表上,但現在還不瞭解)。
但ID並非某一元素的直觀自然屬性, 而是經過分析建模之後確定了實體類,然後賦給實體類來達到跟蹤,區別,儲存目的的一個特值。 而在分析之前,如何判斷一個概念是否有ID,這才是難點。
結合專案實踐及DDD一書中的理論,感覺應該從以下幾方面分析:
1. 某一概念是主動還是從屬性的。如果是從屬性的,且這種從屬性的生命週期嚴格依賴於某實體,如可以考慮成為值物件的候選。
2. 某一概念是否可以被複用,共享,複製。象對應領域屬性,規格,策略,規則的類,雖然對其他實體類的依賴性不是很強,可以獨立存在。可以被不同的實體物件(不是指類)共享,複製,複用。如人的地址屬性, 畫筆的顏色字型屬性,語言級別如string字串。
3. 值物件建立後的作用:
3.1 往往是做為臨時物件來進行計算,得出同型別的新值物件。來給實體物件業務使用。如建立查詢標準這一臨時物件,將此查詢標準與其他查詢標準組合,生成新查詢標準, 給業務應用來進行過濾或查詢。
3.2 建立做為臨時物件來作為實體的業務行為的一個引數,以給業務行為提供驗證檢驗稽核某一規則或是特徵之用
3.3 值物件提供的一些組合方法一般滿足閉包特徵:即 vo.add(VO anotherVO),vo.minus(VO anotherVO)都反回另一值物件。
4. 值物件的儲存和與其相關聯的實體類儲存,由實體類來負責實體類的儲存。透過設定實體對類與值類的級聯關係。來達到實體類負責值物件的儲存管理。
對於banq舉例jj3中的 forumState為值物件,我存在疑問,因為forumState應該需要儲存吧?比如某一時期的最高發貼數(這隻屬推測,JJ3原始碼的閱讀正在日程表上,但現在還不瞭解)。
[該貼被boycott於2008-06-20 16:22修改過]
相關文章
- 關於值物件的理解,疑惑物件
- 對前端“價值”的理解前端
- 我對JavaScript物件的理解JavaScript物件
- 對JavaScript中函式物件的理解JavaScript函式物件
- javascript 將變數值作為物件屬性 獲取物件對應的值JavaScript變數物件
- 談談我對物件導向以及類與物件的理解物件
- 遍歷物件鍵值對的兩種方法物件
- 自己對Java中if變數賦值的理解Java變數賦值
- java學習中對類和物件的理解Java物件
- 理解面對物件的六大原則物件
- 面試——談談你對Java 物件導向思想的理解面試Java物件
- 深入理解 Getter和Setter 對物件的屬性監聽物件
- 值物件與引用物件物件
- 淨產值的理解
- 我對物件導向程式設計的理解,望banq指點。物件程式設計
- 得到框架中物件的值框架物件
- 理解 JavaScript 物件的屬性JavaScript物件
- 理解js的 prototype原型物件JS原型物件
- 對 REST 的理解REST
- 對rose 的理解ROS
- 對Join的理解
- javascript對於值型別資料的物件包裝簡單介紹JavaScript型別物件
- [譯] 值物件(ValueObject)物件Object
- 值物件如何共享物件
- 值物件,實體物件
- 關於值物件的應用物件
- Js物件導向(1): 理解物件JS物件
- 如何理解Return的返回值?
- 理解php物件注入PHP物件
- 理解Selection物件物件
- 理解物件以及物件的屬性、方法、事件 (轉)物件事件
- js裡的物件基本理解(原型)JS物件原型
- 全面理解物件導向的 JavaScript物件JavaScript
- JAVA 物件引用,以及物件賦值Java物件賦值
- 從js中物件的建立方式和繼承,談談對原型鏈的理解JS物件繼承原型
- 我對抽象的理解抽象
- 對於BFC的理解
- 對事務的理解