MVVM設計模式《網摘》

2022-03-12 12:53:12 字數 1734 閱讀 9671

mvvm模式能夠幫你把你程式的業務與展現邏輯從使用者介面乾淨地分離開。保持程式邏輯與介面分離能夠幫助解決很多開發以及設計問題,能夠使你的程式能更容易的測試,維護與公升級。它也能很大程度的增加**重用性,並讓開發者與介面設計者更容易地相互合作。

使用mvvm模式,程式的ui和其背後的展現與業務邏輯將被分離至三個類中:

1-檢視,封裝ui與ui邏輯

2-模型檢視,封裝展示邏輯與狀態

3-模型,封裝程式的業務邏輯以及資料

mvvm模式是展示-模型模式的變種,它優化了一些wpf的核心特性,例如資料繫結,資料模版,命令以及行為。在mvvm模式中,檢視通過資料繫結以及命令列與檢視模型互動,並改變事件通知。檢視模型查詢觀察並協調模型更新,轉換,校驗以及聚合資料,從而在檢視顯示。

下圖展示了mvvm類以及它們之間的互動:

檢視類檢視的責任便是定義使用者在螢幕上能看到的一切的結構以及外觀。理想的檢視背後的**只包含呼叫initializecomponent方法的建構函式。檢視通常扮演以下關鍵角色:

檢視模型類

檢視模型在mvvm模式中為檢視封裝了展示邏輯,它並不是直接引用檢視或者任何其他關於檢視特定的實現或者型別。檢視模型實現了屬性以及命令使得檢視進行資料繫結,並通過改變事件通知來提醒檢視狀態已經改變了。檢視模型提供的屬性和命令定義了提供給ui的功能。但是檢視定義了如何渲染的功能。

檢視模型負責協調檢視與任何需要的模型類的互動。很典型的,檢視模型與檢視類有著一堆多的關係。檢視模型可以選擇直接將模型類暴露給檢視,因此檢視的控制項能夠直擊進行資料繫結。檢視模型可以轉換或者操縱模型資料所以能夠很容易被檢視使用。

很典型的,檢視模型會定義能被展現在ui上並被使用者呼叫的的命令或者行為。乙個通用的例子就是當檢視模型需要提交命令時會允許使用者提交資料到網路服務或者資料庫。檢視可以選擇用乙個按鈕來展示所以使用者能夠點選該按鈕提交資料。典型地,當命令程式設計不可用的,它相關的ui展示也變得不可用。檢視模型通常扮演下面這些關鍵角色:

模型類

model在mvvm模式中封裝了業務邏輯以及資料,業務邏輯定義了像所有檢索和程式資料管理相關的程式邏輯一樣,用來確保所有的保證資料持久與有效的業務規則被應用。最大化**重用,模型不能包含任何特定的情況,特定的使用者任務以及程式邏輯。

典型的有模型為程式展現了客戶端域模型,模型也可能包含支援資料訪問與快取的**,即使有乙個分離的資料庫或者服務被使用。模型與資料房分層通常被作為資料訪問或嗚嗚結構而生成,例如ado.net屍體礦井唉,wcf資料服務,或者wcf ria服務。

模型層實現了輕鬆繫結檢視的功能。這通常意味著它支援通過inotifypropertychangedinotifycollectionchanged進行屬性與集合更改通告。展現物件集合的模型類典型地源自observablecollection類,該類提供了對inotifycollectionchanged介面的實現。

模型也能通過idataerrorinfo介面支援資料驗證以及錯誤報告。這些介面允許當數值改變時的wpf資料繫結被通知,從而更新介面。模型通常扮演如下的關鍵角色:

MVVM設計模式

mvvm是model view viewmodel的簡寫。微軟軟體 ui層更加細節化 可定製化。同時,在技術層面,wpf也帶來了 諸如binding dependency property routed events command datatemplate controltemplate等新特性。...

MVVM設計模式

解釋view是檢視,就是dom 對應檢視也就是html部分 代表ui元件,它負責將資料模型轉化成ui展現出來。model是模型,就是vue元件裡的data,或者說是vuex裡的資料 代表資料模型,也可以在model中定義資料修改和操作的業務邏輯。viewmodel 監聽模型資料也就是data的的改變...

android UI設計MVVM設計模式

在傳統的框架中,提的最多的是mvc和mvp。其中mvc出現與上世紀70年代,在三十多年的工程實踐中,mvc充分證明了它的成功,同時在漫長的時間中演變出了許多變種,其中也包括mvp.mvc和mvp最大的差別在與控制層對於整個框架的控制力上。android中經常會出現數千行的activity 究其原因,...