MVVM架构的理解
摘自維基百科
MVVM(Model–view–viewmodel)是一種軟件架構模式。
MVVM有助于將圖形用戶界面的開發與業務邏輯或后端邏輯(數據模型)的開發分離開來,這是通過置標語言或GUI代碼實現的。MVVM的視圖模型是一個值轉換器,[1]?這意味著視圖模型負責從模型中暴露(轉換)數據對象,以便輕松管理和呈現對象。在這方面,視圖模型比視圖做得更多,并且處理大部分視圖的顯示邏輯。[1]?視圖模型可以實現中介者模式,組織對視圖所支持的用例集的后端邏輯的訪問。
MVVM是馬丁·福勒的PM(Presentation Model)設計模式的變體。[2][3]?MVVM以相同的方式抽象出視圖的狀態和行為,[3]?但PM以不依賴于特定用戶界面平臺的方式抽象出視圖(創建了視圖模型)。
MVVM和PM都來自MVC模式。
MVVM由微軟架構師Ken Cooper和Ted Peters開發,通過利用WPF(微軟.NET圖形系統)和Silverlight(WPF的互聯網應用派生品)的特性來簡化用戶界面的事件驅動程序設計。[3]?微軟的WPF和Silverlight架構師之一John Gossman于2005年在他的博客上發表了MVVM。
MVVM也被稱為model-view-binder,特別是在不涉及.NET平臺的實現中。ZK(Java寫的一個Web應用框架)和KnockoutJS(一個JavaScript庫)使用model-view-binder。[3][4][5]
目錄
- 1MVVM模式的組成部分
- 2理論基礎
- 3批評
- 4.NET中的實現
- 4.1.NET框架
- 5參見
- 6參考文獻
- 7外部鏈接
MVVM模式的組成部分[編輯]
模型理論基礎[編輯]
MVVM旨在利用WPF中的數據綁定函數,通過從視圖層中幾乎刪除所有GUI代碼(代碼隱藏),更好地促進視圖層開發與模式其余部分的分離。[10]?不需要用戶體驗(UX)開發人員編寫GUI代碼,他們可以使用框架標記語言(如XAML),并創建到應用程序開發人員編寫和維護的視圖模型的數據綁定。角色的分離使得交互設計師可以專注于用戶體驗需求,而不是對業務邏輯進行編程。這樣,應用程序的層次可以在多個工作流中進行開發以提高生產力。即使一個開發人員在整個代碼庫上工作,視圖與模型的適當分離也會更加高效,因為基于最終用戶反饋,用戶界面通常在開發周期中經常發生變化,而且處于開發周期后期。
MVVM模式試圖獲得MVC提供的功能性開發分離的兩個優點,同時利用數據綁定的優勢和通過綁定數據的框架盡可能接近純應用程序模型。[10][11][12]?它使用綁定器、視圖模型和任何業務層的數據檢查功能來驗證傳入的數據。結果是模型和框架驅動盡可能多的操作,消除或最小化直接操縱視圖的應用程序邏輯(如代碼隱藏)。
批評[編輯]
對這種模式的批評來自MVVM的創造者John Gossman本人,[13]他指出,實現MVVM的開銷對于簡單的UI操作是“過度的”。他說,對于更大的應用來說,推廣ViewModel變得更加困難。而且,他說明了非常大的應用程序中的數據綁定會導致相當大的內存消耗。
.NET中的實現[編輯]
.NET框架[編輯]
- MVVM基金會
- DotVVM開源項目
轉載于:https://www.cnblogs.com/makai/p/10954452.html
總結
- 上一篇: redis内存操作
- 下一篇: 软键盘挡住输入框问题的终极解决方案