共通點:在 View 與 Model 直接增加一個隔離層,解除強耦合關(guān)系
MVC
View -> Controller -> Model 單向調(diào)用竖共,Model 更新時通過監(jiān)聽器通知 View 界面,由 View 再次發(fā)起調(diào)用鏈獲取最新數(shù)據(jù)
缺點:
- View 部分邏輯的測試困難
- View 與 Model 之間存在監(jiān)聽器的耦合俺祠,造成分離重用困難
- 后期難以追蹤分析公给、整理 Model 與 View 的互動關(guān)系
MVP
View <-> Presenter <-> Model 雙向調(diào)用,一切業(yè)務(wù)邏輯調(diào)度全部交由 Presenter 負責(zé)蜘渣,Model 更新時淌铐,監(jiān)聽事件將發(fā)送至 Presenter 進行處理,最終調(diào)度 View 進行數(shù)據(jù)綁定渲染
缺點:
Presenter 需要手工同步數(shù)據(jù)更新與 View 綁定蔫缸,工作量大腿准,維護困難
MVVM
View <-> ViewModel <-> Model 雙向調(diào)用,ViewModel 即是通過某種數(shù)據(jù)綁定引擎拾碌,將 View 與 Model 進行自動化雙向綁定吐葱,減輕手工編輯綁定 Presenter 的工作量
缺點:
數(shù)據(jù)綁定過程由引擎自動生成,無法通過斷點調(diào)試