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

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

Apr 16, 2019 am 10:27 AM
mvc 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

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP實作MVVM架構:基本原理及應用 PHP實作MVVM架構:基本原理及應用 Jun 18, 2023 am 08:54 AM

PHP實作MVVM架構:基本原理及應用

PHP MVC 架構:建立面向未來的 Web 應用程式 PHP MVC 架構:建立面向未來的 Web 應用程式 Mar 03, 2024 am 09:01 AM

PHP MVC 架構:建立面向未來的 Web 應用程式

PHP MVC 架構的進階指南:解鎖進階功能 PHP MVC 架構的進階指南:解鎖進階功能 Mar 03, 2024 am 09:23 AM

PHP MVC 架構的進階指南:解鎖進階功能

如何使用PHP實作MVC模式 如何使用PHP實作MVC模式 Jun 07, 2023 pm 03:40 PM

如何使用PHP實作MVC模式

揭開SpringMVC框架的成功:它為何廣受歡迎 揭開SpringMVC框架的成功:它為何廣受歡迎 Jan 24, 2024 am 08:39 AM

揭開SpringMVC框架的成功:它為何廣受歡迎

PHP中如何使用MVC架構設計項目 PHP中如何使用MVC架構設計項目 Jun 27, 2023 pm 12:18 PM

PHP中如何使用MVC架構設計項目

Spring MVC詳解:深入解析這個強大的框架 Spring MVC詳解:深入解析這個強大的框架 Dec 29, 2023 am 08:09 AM

Spring MVC詳解:深入解析這個強大的框架

PHP8框架開發MVC:逐步指南 PHP8框架開發MVC:逐步指南 Sep 11, 2023 am 10:05 AM

PHP8框架開發MVC:逐步指南