MVC,MVP 和 MVVM 的區別

2021-09-02 13:52:41 字數 1158 閱讀 6345

一、mvc

mvc模式的意思是,軟體可以分成三個部分。

檢視(view):使用者介面。

控制器(controller):業務邏輯

模型(model):資料儲存

各部分之間的通訊方式如下。

view 傳送指令到 controller

controller 完成業務邏輯後,要求 model 改變狀態

model 將新的資料傳送到 view,使用者得到反饋

所有通訊都是單向的。

二、互動模式

接受使用者指令時,mvc 可以分成兩種方式。一種是通過 view 接受指令,傳遞給 controller。

另一種是直接通過controller接受指令。

三、例項:backbone

實際專案往往採用更靈活的方式,以 backbone.js 為例。

使用者可以向 view 傳送指令(dom 事件),再由 view 直接要求 model 改變狀態。

使用者也可以直接向 controller 傳送指令(改變 url 觸發 hashchange 事件),再由 controller 傳送給 view。

controller 非常薄,只起到路由的作用,而 view 非常厚,業務邏輯都部署在 view。所以,backbone 索性取消了 controller,只保留乙個 router(路由器) 。

四、mvp

mvp 模式將 controller 改名為 presenter,同時改變了通訊方向。

各部分之間的通訊,都是雙向的。

view 與 model 不發生聯絡,都通過 presenter 傳遞。

view 非常薄,不部署任何業務邏輯,稱為"被動檢視"(passive view),即沒有任何主動性,而 presenter非常厚,所有邏輯都部署在那裡。

五、mvvm

mvvm 模式將 presenter 改名為 viewmodel,基本上與 mvp 模式完全一致。

唯一的區別是,它採用雙向繫結(data-binding):view的變動,自動反映在 viewmodel,反之亦然。angular 和 ember 都採用這種模式。

(完)引用阮一峰的網路日誌

引用:

MVC MVP和MVVM的區別

引用自 url 看過高人對這三種常見的.net模式做了分析,總結下來其實只有2種模式。mvvm只是mvp的馬甲。這三種 兩種 模式的不同點在於響應請求的最後一步,也就是對頁面的更新響應,由那一層來完成。mvc模式下,是由view自己進行更新響應,control vm或presenter 是被動等待v...

MVC,MVP 和 MVVM 的詳解

mvc模式的意思是,軟體可以分成三個部分。各部分之間的通訊方式如下。view 傳送指令到 controller controller 完成業務邏輯後,要求 model 改變狀態 model 將新的資料傳送到 view,使用者得到反饋 所有通訊都是單向的。接受使用者指令時,mvc 可以分成兩種方式。一...

mvc,mvp和mvvm的簡單介紹

mvc是最經典的開發模式之一,在上大學的時候老師教的也是這個。mvc有兩個很明顯的問題 1.m層和v層直接打交道,導致這兩層耦合度高 2.因為所有邏輯都寫在c層,導致c層特別臃腫 為了解決這兩個問題,mvc的變種模式出現了mvp和mvvm.mvc架構方式的變種,使用presenter來代替contr...