2012-10-09 23 views
1

可能重複:
Value vs Entity objects (Domain Driven Design)參照實體標識符DDD值對象

在領域驅動設計(DDD)一個的ValueObject具有以下定義

甲價值對象是描述某些特性或屬性的對象,但不包含標識的概念TY。

可以說我有'客戶'實體和'訂單'實體。訂單與客戶有關,所以通常我會在Order類中添加字段ClientId,因爲我可能不會引用客戶實體本身。到目前爲止這麼好...

現在我想知道是否創建一個值對象ClientInfo,它將包括客戶端名稱,客戶端狀態,,還包括ClientId? ClientInfo只有clientName,clientStatus和clientId的getter纔是不可變的。

所以你有它,一個具有實體標識符的值對象。這是否違背價值對象的定義,還是我在這裏安全?

+0

我不認爲這個問題是引用問題的重複。在這裏,OP特別詢問價值對象中的ID,而不是關於實體/價值對象的一般概念。 – theDmi

+0

這確實不是重複提及的問題,而是更具體地針對價值對象及其約束。該定義談到了ValueObject沒有標識的概念,這意味着ValueObject不應該有代表ValueObject的ID。但是,ValueObject可能包含標識符,指的是實體 – ChrisMir

回答

3

引用實體標識符的值對象很好。如果您有兩個具有相同信息的ClientInfo對象,它們將完全可以互換。它們就像字符串或整數一樣。

+1

其優良,但它不是一個值對象 – NimChimpsky

+0

它是一個值對象!它沒有自己的身份,它包含代表實體身份的值。 –

+0

表示ID的值仍然是一個ID,它唯一地綁定到一個客戶端,它不僅僅表示值。 – NimChimpsky