mvvm的理解

來源:互聯網
上載者:User

標籤:

1. Mvvm是什麼,Mvvm是怎麼來的?
Mvvm模式廣泛應用在WPF項目開發中,使用此模式可以把UI和商務邏輯分離開,使UI設計人員和商務邏輯人員能夠分工明確。

Mvvm模式是根據MVP模式來的,可以簡單的說,Mvvm模式就是WPF版的MVP模式。MVP模式,MVC模式,這幾個模式都是為了抽離出UI邏輯和商務邏輯。

 

2. 使用Mvvm模式可以參考的主流架構及簡單介紹。
主流開源架構:Simple Mvvm,Mvvm Light和Prism。
Simple Mvvm和Mvvm Light基本一致,都是對Mvvm模式的基礎封裝,並加入了一些不錯的功能,訊息傳輸機制,依賴注入等等。開發中小項目推薦使用這兩個的其中一個。
Prism是微軟給出的一個Mvvm架構,不過它的關注點不僅僅是Mvvm模式,我覺得主要是模組的思想更多一些。大項目的話才推薦使用這個架構,比如一個系統需要分為N個團隊進行不同模組的開發,然後再組織成一個系統。 

3. 使用Mvvm模式的思想分析問題。
現在有一個功能:使用者填入姓名,年齡,選擇最喜歡的顏色,然後點擊確定按鈕提交。就是這樣簡單的一個調查表。
a.首先設計UI,UI看起來可能是這樣的:


b.根據UI去設計對應的ViewModel層需要那些屬性,資料和命令:

 Name:string Age:int FavoriteColor:string Submit:Command


c.在ViewModel層的SubmitCommand命令中,調用Model層的Submit方法進行邏輯處理。Model層看起來可能是這樣的:

 public string Name { get; set; } public int Age { get; set; } public string FavoriteColor { get; set; } public void Submit() { ... }


4. 看到的一些對Mvvm模式的看法,覺得不太正確。
a.Code-Behind檔案要保證絕對乾淨。
這個說法有些太絕對了,理想狀態下,View層的Code-Behind檔案中只有在建構函式中調用初始UI元素的一行代碼及設定View層的DataContext為對於的ViewModel層。
其實,Code-Behind中還可以些一些UI的邏輯的,比如一些豐富的動畫效果,或者直接設定某個元素的樣式等。
不過,Code-Behind中確實是不可以寫商務邏輯的。
b.ViewModel層不能是Model層的簡單封裝,ViewModel層也不能是View層的簡易對應。ViewModel層和View層要絕對分離,ViewModel層要和View層一樣去面向需求設計。
我覺得這樣做有點太過了。
Mvvm的目的只是為了UI邏輯和商務邏輯的分離,你說商務邏輯和資料要寫在哪一層呢?沒錯,Model層。
ViewModel層的主要責任是表現邏輯和狀態,即ViewModel層是串連View層和Model層的。Model層的一些商務邏輯的狀態是需要通過ViewModel層暴露給View層來反映給軟體使用者的。 

5.我對WPF+Mvvm模式開發的一些經驗。
a.WPF的幾個重要概念要熟練理解和運用:模板,相依性屬性,資料繫結。和Mvvm模式的結合使用,能發揮出很好的效果。
b.團隊中的成員最好能夠對Mvvm模式有統一的理解和認識。
c.Mvvm模式只是一個模式而已,不是有了Mvvm模式就能寫出優美的代碼,涉及到具體的商務邏輯,還是需要你以及你的團隊有足夠強的設計能力。

mvvm的理解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.