2013-06-18 66 views
0

在我的業務領域中,一個實體「CompanyPrefix」似乎擴展了一個VO CompanyPrefixVO,它保留了所有業務規則。沒有其他班會使用這個VO。作爲一種良好實踐:實體類是否可以從Value對象繼承?

  1. 我應該從CompanyPrefixVO擴展CompanyPrefix嗎?或
  2. 刪除VO並將業務規則合併到實體CompanyPrefix中?或
  3. CompanyPrefix應該只與CompanyPrefixVO關聯?或
  4. 有什麼不同?

enter image description here

回答

1

繼承會導致很多問題,首先是高耦合的,並有很強的依賴性可以從不斷髮展的阻礙你的域模型。我會用組合來代替。價值對象可以是實體的一部分。

這就是說我還會問幾個問題:CompanyPrefix會是什麼樣的業務實體?它不只是名稱或標識符的一部分嗎?它是否有自己的生命週期,即它是否會隨着時間的推移而改變其屬性?爲什麼前綴需要一個ID?僅用於規範化(又名不屬於域模型的數據庫細節?)

我不知道您的具體情況,但可能只是代表公司前綴的VO作爲公司的一部分。

+0

Thankyou @Dennis Traub。 CompanyPrefix有其自己的生命週期。公司可以擁有多個由不同身份提供商提供的公司前綴,這些提供商也可能隨着時間的推移而過時。所以公司的前綴顯然是一個實體,雖然實體名稱有點混亂。它實際上是全球唯一的公司標識符。 我對繼承有了一些看法,但另一方面,company.companyPrefix.CompanyPrefixVO.value對我來說有點奇怪。 – WSK

+0

然後,我會將兩者合併到前綴中。除此之外,通過一個對象直接檢索包含對象的屬性被認爲是不好的做法。包含對象通常會封裝對內部對象的訪問。谷歌「告訴別問」或「德米特法」瞭解更多信息。 –