關於實體與值物件的問題
在我理解,一個領域物件是實體物件還是值物件,主要是根據應用場景來決定的。
那假如說在一個系統中,有一個領域物件在某一個應用場景中屬於值物件的範疇,但是在另一個場景中卻屬於實體物件,那麼這個物件應該如何設計?
用現實生活中的例子來說明吧:
我們平時買東西都是用人民幣來支付,這個時候,不管是一張一百塊的,還是2張五十的或者是十張十塊的,它們是等值的,我認為這個時候就相當於系統中的值物件。但是我們知道,每張人民幣又都是不一樣的,因為每張人民幣都有自己唯一的編號還有印刷年份,生活中就有人喜歡收集一些特殊編號的人民幣,這個時候的人民幣就不能用值物件的方式來表示,只能以實體的方式出現。
那麼請問,系統中如果出現這樣的需求,那應該如何設計像人民幣這類的物件。
我們借鑑DDDexample裡面的例子。
首先設計兩個介面:
public interface Entity<T> {
public boolean samePrimaryKeyAs(T other);
}
public interface ValueObject<T> {
public boolean sameValueAs(T other);
}
那像這類的領域物件是要實現這兩個介面呢?還是隻實現Entity介面,然後在充當值物件的時候呼叫equals方法?
那假如說在一個系統中,有一個領域物件在某一個應用場景中屬於值物件的範疇,但是在另一個場景中卻屬於實體物件,那麼這個物件應該如何設計?
用現實生活中的例子來說明吧:
我們平時買東西都是用人民幣來支付,這個時候,不管是一張一百塊的,還是2張五十的或者是十張十塊的,它們是等值的,我認為這個時候就相當於系統中的值物件。但是我們知道,每張人民幣又都是不一樣的,因為每張人民幣都有自己唯一的編號還有印刷年份,生活中就有人喜歡收集一些特殊編號的人民幣,這個時候的人民幣就不能用值物件的方式來表示,只能以實體的方式出現。
那麼請問,系統中如果出現這樣的需求,那應該如何設計像人民幣這類的物件。
我們借鑑DDDexample裡面的例子。
首先設計兩個介面:
public interface Entity<T> {
public boolean samePrimaryKeyAs(T other);
}
public interface ValueObject<T> {
public boolean sameValueAs(T other);
}
那像這類的領域物件是要實現這兩個介面呢?還是隻實現Entity介面,然後在充當值物件的時候呼叫equals方法?
相關文章
- 關於值物件的驗證的問題物件
- 關於css權值的問題CSS
- 關於物件持久化的問題物件持久化
- 請教賬單領域的實體,值物件與服務的設計問題.物件
- 關於實體域物件物件
- 關於FILE_MODE值的問題,!!!!!
- 關於物件顆粒大小的問題。物件
- 關於值物件的理解,疑惑物件
- 關於值物件的應用物件
- 請教:關於排課問題的實體關係
- 關於Session值丟失問題Session
- 值物件,實體物件
- 關於物件繼承的問題——利用空物件做中介物件繼承
- JDK動態代理物件與被代理物件地址值問題JDK物件
- 一個關於值傳遞呼叫的問題
- 關於python中填充缺失值的問題Python
- 關於QGraphicsView中的物件移動問題. zView物件
- 關於硬體及軟體實現條帶化的問題
- 實體和值物件物件
- DDD中實體與值物件是幹什麼的物件
- 關於int型別數值的運算問題型別
- [緊急求救]關於動態建立物件的問題物件
- 關於配置檔案中的預設值的問題
- 關於java吃記憶體的問題Java記憶體
- 關於值物件中不解之處物件
- 請教一個關於EJB建立物件時的問題物件
- 關於單機遊戲製作中的物件重用問題(轉)遊戲物件
- 關於物件導向的方法並行執行的問題物件並行
- java值物件的傳輸問題請教Java物件
- 關於PHP記憶體洩漏的問題PHP記憶體
- (求教)關於js函式按值、引用傳遞的問題JS函式
- 關於CleanMyMac常見問題與解答Mac
- 關於內嵌物件(Embedded Object)快取設計的問題物件Object快取
- [原創]關於Java String物件建立問題解惑Java物件
- 關於SQLServerDriver的問題SQLServer
- 關於 JavaMail 的問題JavaAI
- 關於session的問題Session
- 關於C++物件的成員變數的佈局問題C++物件變數