2009-11-23 83 views

回答

9

是的,這是能夠分辨出來,特別是當你在設計和實現你的類型非常有幫助。

一個主要的區別是,當涉及到處理平等,因爲實體應該比值對象完全不同的行爲。知道你的對象是一個實體還是一個值對象告訴你如何實現類型的平等。這本身是有用的,但它並不止於此。

實體是可變類型(至少通過概念)。實體背後的全部理念是它代表了一個具有已知生命進程的域概念(即它被創建,它經歷了幾次轉換,它被存檔並可能最終被刪除)。它代表即使經過數月或數年,同樣特定的'事物',並且它沿途改變狀態。

值對象另一方面只是表示沒有任何固有標識的值。雖然你不必這樣做,但它們非常適合作爲不可變類型來實現。這非常有趣,因爲任何不可變類型都是線性安全的。當我們進入多核時代時,知道何時將對象實現爲不可變類型非常有價值。

它也有很大幫助,在單元測試時,平等的語義是衆所周知的。在這兩種情況下,平等都是明確的。我不知道你使用的是什麼語言,但是在許多語言(C#,Java,VB.NET)中,通過默認引用來確定相等性,這在許多情況下並不特別有用。

相關問題