首頁 > 常見問題 > 主體

MVVM模式和MVC模式的區別

Guanhui
發布: 2020-05-30 16:41:22
原創
4915 人瀏覽過

MVVM模式和MVC模式的區別

MVVM模式與MVC模式的差異

#1、MVVM模式是由MVC模式衍生出來的;

##2 、MVVM模式是雙向綁定數據,而MVC模式是單向通訊;

3、MVVM模式一般用於前端開發的較多,MVC模式在服務端用的較多。


MVC

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

MVC是Model-View-Controller的縮寫,它將應用程式分成三個部分:

  • Model: 模型(用於封裝與應用程式的業務邏輯相關的資料以及對資料的處理方法)

  • View: 視圖(渲染頁面)

  • Controller: 控制器(M和V之間的連接器,用於控制應用程式的流程,及頁面的業務邏輯)

MVC特點:##MVC模式的特點在於實現關注點分離,即應用程式中的資料模型與業務和展示邏輯解耦。在客戶端web開發中,就是將模型(M-資料、操作資料)、視圖(V-顯示資料的HTML元素)之間實現程式碼分離,鬆散耦合,使之成為一個更容易開發、維護和測試的客戶端應用程式。

1、View 傳送指令到Controller ;

2、Controller 完成業務邏輯後,要求Model 改變狀態;

3、Model 將新的資料傳送到View,用戶得到回饋。

MVC優點:

    耦合性低,視圖層和業務層分離,這樣就允許更改視圖層程式碼而不用重新編譯模型和控制器代碼。
  • 重用性高
  • 生命週期成本低
  • MVC使開發和維護用戶接口的技術含量降低
  • 可維護性高,分離視圖層和業務邏輯層也使得WEB應用更容易維護和修改
  • ##部署快
  • MVC缺點:

#不適合小型,中等規模的應用程序,花費大量時間將MVC應用到規模並不是很大的應用程式通常會得不償失。
  • 視圖與控制器間過於緊密連接,視圖與控制器是相互分離,但卻是聯繫緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。
  • 視圖對模型資料的低效率訪問,依據模型操作介面的不同,視圖可能需要多次調用才能獲得足夠的顯示資料。對未變更資料的不必要的頻繁訪問,也將損害操作效能。
  • MVC應用程式:

在web app 流行之初, MVC 就應用了java(struts2)和C#(ASP.NET)在服務端應用程式中,後來在客戶端應用程式中,基於MVC模式,AngularJS應運而生。

MVVM

MVVM是Model-View-ViewModel的簡寫。微軟的WPF(Windows Presentation Foundation–微軟推出的基於Windows 的使用者介面框架)帶來了新的技術體驗, 使得軟體UI層更加細節化、可自訂化。同時,在技術層面,WPF也帶來了諸如Binding(綁定)、Dependency Property(依賴屬性)、Routed Events(路由事件)、Command(指令)、DataTemplate(資料模板)、ControlTemplate(控制模板)等新特性。 MVVM模式其實是MV模式與WPF結合的應用方式時發展演變過來的一種新型架構模式。它立足於原有MVP框架並且把WPF的新特性糅合進去,以因應客戶日益複雜的需求變化。

MVVM優點:

MVVM模式和MVC模式類似,主要目的是分離視圖(View)和模型(Model),有幾大優點:

低耦合,視圖(View)可以獨立於Model變化和修改,一個ViewModel可以綁定到不同的”View」上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。
  • 可重複使用性,可以把一些視圖邏輯放在一個ViewModel裡面,讓很多view重複使用這段視圖邏輯。
  • 獨立開發,開發人員可以專注於業務邏輯和資料的開發(ViewModel),設計人員可以專注於頁面設計,使用Expression Blend可以輕鬆設計介面並產生xml程式碼。
  • 可測試,介面向來是比較難於測試的,而現在測試可以針對ViewModel來寫。
  • 推薦教學:《
  • PHP教學

以上是MVVM模式和MVC模式的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!