簡介
由微軟架構師Ken Cooper和Ted Peters開發(fā),最先在WPF悯姊、Silverlight 和 WP7開發(fā)里使用
關鍵技術就是數(shù)據(jù)綁定(data binding)弛秋,又被稱作 model-view-binder
ReactJS/Vue/ 就使用這種模式
M - Model
數(shù)據(jù)層 - 業(yè)務模型
- 封裝與業(yè)務邏輯相關的數(shù)據(jù)
- 數(shù)據(jù)讀取/處理/存儲特纤,提供數(shù)據(jù)接口
V - View
展示層 - 用戶界面
- 數(shù)據(jù)顯示
- 動畫效果
- 接受用戶操作
VM - ViewModel
作為 View 與 Model 交互的中間紐帶
- 從 Model 獲取數(shù)據(jù),將數(shù)據(jù)處理成可以直接顯示的數(shù)據(jù)
- 與 View 進行數(shù)據(jù)和事件的綁定
模型
mvvm.png
View 接收用戶事件阔涉,傳遞給 ViewModel 處理邏輯,ViewModel 更新 Model 數(shù)據(jù)捷绒,Model 改變后通知 ViewModel 更新瑰排,View 綁定 ViewModel 自動獲取數(shù)據(jù)顯示
優(yōu)點
- 低耦合,View可以獨立于Model變化和修改暖侨,一個ViewModel可以綁定到不同的View椭住,當View變化的時候Model可以不變,當Model變化的時候View也可以不變
- 可重用性字逗,可以把一些視圖邏輯放在一個ViewModel里面京郑,讓很多View重用這段視圖邏輯
- 職責拆分,開發(fā)人員可以專注于業(yè)務邏輯和數(shù)據(jù)的開發(fā)(ViewModel)葫掉,設計人員可以專注于頁面設計
- 可測試性
- ViewModel和View之間的交互通過Data Binding完成傻挂,實現(xiàn)雙向的交互,代碼優(yōu)雅簡潔
缺點
- 大型應用程序中挖息,數(shù)據(jù)綁定會導致內存消耗比較大
參考文檔
https://zh.wikipedia.org/wiki/MVVM
http://www.reibang.com/p/68aa6071c02e