我只想補充說,對於小型項目,只需擁有自己的ViewModel並使用它即可。稍後,您可以在實體需要時分開實體。
對於許多開發者增加新圖層而沒有權衡利弊,後來他們開始注意到滯後疑惑發生。 MVC本身已經是一個分離關注點。
擁有獨立的DomainEntity解決了UI不再將1對1映射到實體的問題,請考慮以下事項。
Version 1
Domain | Presentation
--------------------------------
User.FirstName | User.Name
User.LastName |
User.PositionTitle | User.PositionTitle
該示例演示了域和演示文稿不再以1對1映射。在未來,你可能有域的修改,如下列:
Version 2
Domain | Presentation
--------------------------------
User.FirstName | User.Name
User.LastName |
Position.Title | User.PositionTitle
基於上面的例子(第2版),請注意,呈現沒有被修改。擁有分離的域模型可以提高界面的穩定性。它甚至可以降低重構場景的更改成本。
優勢的視圖模型
視圖模型的美妙之處在於它能夠消除您的域名從表示,在大型項目中,不同的開發商處理系統的不同部分使用時,這樣的好處是更明顯(獨立GUI團隊)
一個小小的變化需要更改許多類。
這是解耦您的實體的缺點之一,它會創建代碼的重複。額外的編碼具有巨大的成本,其益處顯而易見是值得的。
愚蠢的問題,但你用什麼來訪問你的數據庫?實體框架?如果是這樣,Entity Framework支持可以直接映射到ViewModel的投影。 –
當您的要求或域名實體發生變化,並且它們與您需要顯示的內容不一樣時,那麼是什麼? –
@BigDaddy,這是一個很好的觀點,但如果這是他需要展示的東西,那麼它可以節省麻煩,福勒稱之爲鳥槍變異的氣味。一個小的改變需要改變許多類。 – dove