1. 程式人生 > >MVC-MVP-MVVM框架模式分析

MVC-MVP-MVVM框架模式分析

無法 連接 不能 相互 轉化 觀察者 作用 展示 .com

MVC(Model-View-Controller)

MVC 架構模式圖(經典版)

技術分享圖片

註:實際上,Model和View永遠不能相互通信,只能通過Controller傳遞;上圖只是MVC模式的經典圖。

MVC一般流程:
用戶操作->View(負責接收用戶的輸入操作)->Controller(業務邏輯處理)->Model(數據持久化)->View(將結果反饋給View),單向通信。

各模塊功能:
視圖(View):用戶界面。(傳送指令到 Controller)
控制器(Controller):業務邏輯 (完成業務邏輯後,要求 Model 改變狀態)

  • 作用:負責將 View 中用戶的動作傳達給 Model,將 Model 的數據通過 View 展現出來
  • 負責:顯示界面、響應用戶的操作、網絡請求以及與 Model 交互

模型(Model):數據保存、數據持久化。(將新的數據發送到 View,用戶得到反饋)

缺點:
1.Controller邏輯復雜,難以維護。
2.Controller 和 View 緊耦合,無法測試。

MVP(Model-View-Presenter)

技術分享圖片

特點:

  1. 各部分之間的通信,都是雙向的。
  2. View 與 Model 不發生聯系,都通過 Presenter 傳遞。
  3. View 非常薄,不部署任何業務邏輯,稱為"被動視圖"(Passive View),即沒有任何主動性,而 Presenter非常厚,所有邏輯都部署在那裏。

MVVM(Model-View-ViewModel)

技術分享圖片

各模塊功能:
Model【模型】:指的是後端傳遞的數據。
View【視圖】:指的是所看到的頁面。
ViewModel【視圖模型】:mvvm模式的核心,它是連接view和model的橋梁。
ViewModel 負責:
1.校驗用戶輸入
2.網絡請求
3.展示層的邏輯,比如格式化字符串
4.其他不能放入 Model,與 View 無關的邏輯
作用:
1、將【模型】轉化成【視圖】,即將後端傳遞的數據轉化成所看到的頁面。實現的方式是:數據綁定。
2、將【視圖】轉化成【模型】,即將所看到的頁面轉化成後端的數據。實現的方式是:DOM 事件監聽。
這兩個轉化的實現過程,我們稱之為數據的雙向綁定

詳細流程圖:
技術分享圖片

註:
1.視圖和模型是不能直接通信的。
2.與MVC相比,把原來View和Controller層的業務邏輯和頁面邏輯等剝離出來放到ViewModel層。

在vue前端框架中,MVVM的應用:
ViewModel通常要實現一個observer觀察者,當數據發生變化,ViewModel能夠監聽到數據的這種變化,然後通知到對應的視圖做自動更新;而當用戶操作視圖,ViewModel也能監聽到視圖的變化,然後通知數據做改動,這實際上就實現了數據的雙向綁定。並且MVVM中的View 和 ViewModel可以互相通信

MVC-MVP-MVVM框架模式分析