2010-01-09 61 views
3

我認爲MVP中由M表示的'Model'可能是領域模型還是演示/視圖模型?Models in Model View演示者MVP

+0

你的意思是MVC? – 2010-01-09 10:36:46

+0

@Jan我的意思是MVP。我的問題有問題嗎?可能有些缺乏理解。 – David 2010-01-09 10:42:03

回答

7

是的,模型本質上可以是任何模型。我看到它的方式,MVC的初衷是它是一個域對象,而且這當然還是有可能的。

但是,我的經驗表明,如果我們引入專門的ViewModel/Presentation Model作爲領域模型和視圖之間的絕緣,就會達到更好的契合度。

即使ViewModel似乎與Domain Object在語義上相同,這樣的絕緣使我們能夠獨立地改變兩個,因此遵循Single Responsibility Principle

通常情況下,View需要一些適用於特定UI技術的邏輯,而且這種邏輯非常適合於領域模型。示例包括:

  • 確定是否應啓用或禁用特定控件的邏輯。領域模型應該對控件一無所知。
  • 將狀態映射到顏色的邏輯。顏色是特定於技術的 - 它們是Windows窗體,WPF和ASP.NET中不同的CLR類型。
  • 驗證。輸入表單通常允許輸入無效數據而不會拋出異常。相反,他們向用戶提供數據無效的反饋。另一方面,域對象應該保護它們的不變量,從而導致無效輸入。

更多信息可以在這裏找到

+0

感謝您的好解釋。我的意圖是讓控制器查詢域和助手(某種映射器/彙編器)構建一個演示文稿特定的視圖模型,您是否同意這種方法是正確的? – David 2010-01-09 11:36:13

+0

是的,命中領域模型以檢索您需要的任何內容,使用映射器映射到ViewModel,並使用該ViewModel呈現視圖。這基本上就是我所做的。 – 2010-01-09 12:10:21

+0

再次感謝馬克。關於這個問題,我還會提出其他一些問題,我會提出並感謝您的意見。 – David 2010-01-09 12:15:44

相關問題