2010-06-16 29 views
3

在MVC中使用ViewModels之後,我想知道是否將相同的MVP模式應用於實際。我只有幾個考慮因素,一個是MVP已經相當難以實現(所有附加的編碼,看起來並不複雜),或者ViewModels已經有一些類似的數據或實體建模方法。以ViewModel的形式添加另一個層是多餘的還是邏輯抽象,作爲實現MVP模式的一員,我應該堅持?ViewModels是否適合模型視圖展示器模式?

回答

3

ViewModels在MVP中可能非常有用,我認爲增加更多的好處額外的編碼。

我認爲指導原則是在需要它們的地方使用它們,而不是簡單地爲他們自己添加更多模式或架構。

我在一個體面大小的面向公共的asp.net web應用程序上工作,但以下內容也適用於WinForms中的MVP。以下是我發現在MVP中使用虛擬機的原因。

該網站彙總了大量LOB網絡服務的數據。這些服務由不同業務領域的各種開發團隊維護。回來的數據是所有的地方在以下方面:

  • 類型湯 - 存儲的GUID爲字符串,返回雙打,而不是小數,日期爲字符串,等等
  • 瘋狂的命名約定 - 駱駝情況下的特性,下劃線在名稱中,縮寫jumbbles

但是我發現使用它的最大原因是提供的模型與MVC中的模型相同:模型不符合視圖的形狀。我們正在結合模型類,並增加額外的字段計算或彙總值等

在變化方面我們做了我們必須:

  • 創建沿邊一個新的ViewModels文件夾視圖和主持人(控制器)夾
  • 地圖的模型值來視圖模型
  • 變化從一個模型類型的圖模型類型
  • 視圖接口上的屬性根據新的對象實現視圖

其中唯一耗費時間的部分自然是模型到視圖模型的映射。在我們的案例中,我們不得不在我們的演示者中進行大量處理,以獲取我們需要的數據,分配屬性並不是什麼大不了的事情。對於更簡單的需求,像AutoMapper會消除這種映射的痛苦。

+0

幾個月的試驗和錯誤讓我想到了在每個案例的基礎上使用虛擬機。它在包裝模型方面確實簡化了大量工作,因此可以輕鬆調整更改。不過,我使用它們作爲包裝來簡化事情。 – Jonn 2010-09-07 01:57:40

0

發現一個MVPVM的實現與我想要做的相似。 (當我實現它時發現它非常複雜,很多重複的工作,用代碼生成工具可能會更好)

相關問題