區別:MVC表示“模型-視圖-控制器”,MVP表示“模型-視圖-演示者”,MVVM表示“模型-視圖-視圖模型”;MVP、MVVM都是由MVC衍生出的。在MVC中,View會直接從Model讀取資料;MVP中,View並不會直接使用Model。
MVC、MVP和MVVM是三種流行的設計模式。其中,MVC表示模型-視圖-控制器,MVP表示模型-視圖-演示者,MVVM表示模型-視圖-視圖模型;MVP, MVVM都是由MVC衍生出。所有這些設計模式大體上都有助於開發鬆散組合、易於測試和維護的應用程式。
一、MVC(Model-View-Controller)
#MVC是比較直覺的架構模式,最初生根於伺服器端的Web開發,後來漸漸能夠勝任客戶端Web開發,能夠滿足其複雜性與豐富性。
MVC模式將應用程式分成三個部分:
● Model: 模型(用於封裝與應用程式的業務邏輯相關的資料以及對資料的處理方法)
● View: 視圖(渲染頁)
● Controller: 控制器(M和V之間的連接器,用於控制應用程式的流程,及頁面的業務邏輯)
MVC特點:
MVC模式的特點在於實現關注點分離,即應用程式中的資料模型與業務和展示邏輯解耦。在客戶端web開發中,就是將模型(M-資料、操作資料)、視圖(V-顯示資料的HTML元素)之間實現程式碼分離,鬆散耦合,使之成為一個更容易開發、維護和測試的客戶端應用程式。
使用者操作->View(負責接收使用者的輸入操作)->Controller(業務邏輯處理)->Model(資料持久化)->View(將結果回饋給View):
1、View 傳送指令到Controller ;
2、Controller 完成業務邏輯後,請Model 改變狀態;
3、Model 將新的資料傳送至View,用戶得到回饋。
二、MVP(Model-View-Presenter)
MVP是把MVC中的Controller換成了Presenter(呈現),目的就是為了完全切斷View跟Model之間的聯繫,由Presenter充當橋樑,做到View-Model之間通訊的完全隔離方向。
MVP特點:
# ● M、V、P之間雙向通訊。
● View 與 Model之間不通信,都透過 Presenter 傳遞。 Presenter完全把Model和View進行了分離,主要的程式邏輯在Presenter裡實作。
● View 非常薄,不部署任何業務邏輯,稱為」被動視圖」(Passive View),即沒有任何主動性,而 Presenter非常厚,所有邏輯都部署在那裡。
● Presenter與具體的View是沒有直接關聯的,而是透過定義好的介面進行交互,從而使得在變更View時候可以保持Presenter的不變,這樣就可以重複使用。不僅如此,還可以編寫測試用的View,模擬使用者的各種操作,從而實現Presenter的測試–因此不需要使用自動化的測試工具。
三、MVVM(Model-View-ViewModel)
MVVM 模式將Presenter 改名為ViewModel,基本上與MVP 模式完全一致。如果說MVP是MVC的進一步改進,那麼MVVM則是思想的完全改變。它是將「資料模型資料雙向綁定」的想法作為核心,因此在View和Model之間沒有聯繫,透過ViewModel進行交互,而且Model和ViewModel之間的交互是雙向的,因此視圖的資料的變化會同時修改資料來源,而資料來源資料的變化也會立即反應到View上。
總結:
#在MVC中,View會直接從Model讀取資料而不是透過Controller;View和Controller之間存在多對一關係。
在MVP中,View並沒有直接使用Model,它們之間的通訊是透過Presenter (MVC中的Controller)來進行的,所有的互動都發生在Presenter內部;View和Presenter之間是一對一關係。
MVVM 模式基本上與 MVP 模式完全一致,唯一的差異是:MVVM採用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。
以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !
以上是MVC、MVP和MVVM之間的差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!