搜尋
首頁常見問題MVC、MVP和MVVM之間的差異是什麼?

區別:MVC表示“模型-視圖-控制器”,MVP表示“模型-視圖-演示者”,MVVM表示“模型-視圖-視圖模型”;MVP、MVVM都是由MVC衍生出的。在MVC中,View會直接從Model讀取資料;MVP中,View並不會直接使用Model。

MVC、MVP和MVVM之間的差異是什麼?

MVC、MVP和MVVM是三種流行的設計模式。其中,MVC表示模型-視圖-控制器,MVP表示模型-視圖-演示者,MVVM表示模型-視圖-視圖模型;MVP, MVVM都是由MVC衍生出。所有這些設計模式大體上都有助於開發鬆散組合、易於測試和維護的應用程式。

一、MVC(Model-View-Controller)

#MVC是比較直覺的架構模式,最初生根於伺服器端的Web開發,後來漸漸能夠勝任客戶端Web開發,能夠滿足其複雜性與豐富性。

MVC、MVP和MVVM之間的差異是什麼?

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之間通訊的完全隔離方向。

MVC、MVP和MVVM之間的差異是什麼?

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、MVP和MVVM之間的差異是什麼?

總結:

#在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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。