MVVM設計模式

2021-06-17 15:08:12 字數 1866 閱讀 3393

mvvm是model-view-viewmodel的簡寫。

微軟軟體

ui層更加細節化、可定製化。同時,在技術層面,wpf也帶來了 諸如binding、dependency property、routed events、command、datatemplate、controltemplate等新特性。mvvm(model-view-viewmodel)框架的由來便是mvp(model-view-presenter)模式與wpf結合的應用方式時發展演變過來的一種新型架構框架。它立足於原有mvp框架並且把wpf的新特性揉合進去,以應對客戶日益複雜的需求變化。

wpf的資料繫結與presentation model相結合是非常好的做法,使得開發人員可以將view和邏輯分離出來,但這種資料繫結技術非常簡單實用,也是wpf所特有的,所以我們又稱之為model-view-viewmodel(mvvm)。這種模式跟經典的mvp(model-view-presenter)模式很相似,除了你需要乙個為view量身定製的model,這個model就是viewmodel。viewmodel包含所有由ui特定的介面和屬性,並由乙個 viewmodel 的檢視的繫結屬性,並可獲得二者之間的鬆散耦合,所以需要在viewmodel 直接更新檢視中編寫相應**。資料繫結系統還支援提供了標準化的方式傳輸到檢視的驗證錯誤的輸入的驗證。

在檢視(view)部分,通常也就是乙個aspx頁面。在以前設計模式中由於沒有清晰的職責劃分,ui 層經常成為邏輯層的全能**,而後者實際上屬於

應用程式

的其他層。mvp 裡的m 其實和mvc裡的m是乙個,都是封裝了核心資料、邏輯和功能的計算關係的模型,而v是檢視(

窗體),p就是封裝了窗體中的所有操作、響應使用者的輸入輸出、事件等,與mvc裡的c差不多,區別是mvc是系統級架構的,而mvp是用在某個特定頁面上的,也就是說mvp的靈活性要遠遠大於mvc,實現起來也極為簡單。

我們再從iview這個inte***ce層來解析,它可以幫助我們把各類ui與邏輯層解耦,同時可以從ui層進入自動化測試(unit/automatic test)並提供了入口,在以前可以由winform/web form/mfc等編寫的ui是通過事件windows訊息與iview層溝通的。wpf與iview層的溝通,最佳的手段是使用binding,當然,也可以使用事件;presenter層要實現iview,

多型機制可以保證執行時ui層顯示恰當的資料。比如binding,在程式中,你可能看到binding的source是某個inte***ce型別的變數,實際上,這個inte***ce變數引用著的物件才是真正的資料來源。

mvc模式大家都已經非常熟悉了,在這裡我就不贅述,這些模式也是依次進化而形成mvc—>mvp—>mvvm。有一句話說的好:當物體受到接力的時候,凡是有介面的地方就是最容易被撕下來的地方。因此,iview作為公共檢視介面約束(契約)的一層意思;view則能傳達解耦的一層意思。

下面介紹一下mvvm設計模式。因為wpf技術出現,從而使mvp設計模式有所改進,mvvm 模式便是使用的是資料繫結基礎架構。它們可以輕鬆構建ui的必要元素。

view繫結到viewmodel,然後執行一些命令在向它請求乙個動作。而反過來,viewmodel跟model通訊,告訴它更新來響應ui。這樣便使得為應用構建ui非常的容易。往乙個應用程式上貼乙個介面越容易,外觀

設計師就越容易使用blend來建立乙個漂亮的介面。同時,當ui和功能越來越鬆耦合的時候,功能的可測試性就越來越強。

在mvp模式

中,為了讓ui層能夠從邏輯層上分離下來,設計師們在ui層與邏輯層之間加了一層inte***ce。無論是ui開發人員還是資料開發人員,都要尊重這個契約、按照它進行設計和開發。這樣,理想狀態下無論是web ui還是window ui就都可以使用同一套資料邏輯了。借鑑mvp的iview層,養成習慣。view model聽起來比presenter要貼切得多;會把一些跟事件、命令相關的東西放在controler裡。

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 究其原因,...

iOS設計模式 MVVM

原文 如果你已經開發ios應用程式有一段時間了,那麼你可能聽說過mvvm或者mvc 設計模式 這是你構建ios應用程式的標準模式。然而,最近,我越來越厭倦mvc的一些缺點了。在這篇文章中,我要梳理一下什麼是mvc,及其缺點,並告訴你乙個新的方式來組織你的應用程式 那就是 mvvm。model vie...