日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

MVC與MVVM的區別與理解

作者:每天都要進步哦 更新時間: 2022-07-18 編程語言

MVC

經典MVC模式中,M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。

MVC 編程模式

M(Model):模型層。是應用程序中用于處理應用程序數據邏輯的部分,模型對象負責在數據庫中存取數據;
V(View):視圖層。是應用程序中處理數據顯示的部分,視圖是依據模型數據創建的;
C(Controller):控制層。是應用程序中處理用戶交互的部分,控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數據。

?MVC的優缺點

優點

1.耦合性低

視圖層和業務層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個應用的業務流程或者業務規則的改變只需要改動MVC的模型層即可。因為模型與控制器和視圖相分離,所以很容易改變應用程序的數據層和業務規則。

2.重用性高

MVC模式允許使用各種不同樣式的視圖來訪問同一個服務器端的代碼,因為多個視圖能共享一個模型,它包括任何WEB(HTTP)瀏覽器或者無線瀏覽器(wap),比如,用戶可以通過電腦也可通過手機來訂購某樣產品,雖然訂購的方式不一樣,但處理訂購產品的方式是一樣的。由于模型返回的數據沒有進行格式化,所以同樣的構件能被不同的界面使用。

3.部署快,生命周期成本低

MVC使開發和維護用戶接口的技術含量降低。使用MVC模式使開發時間得到相當大的縮減,它使程序員(Java開發人員)集中精力于業務邏輯,界面程序員(HTML和JSP開發人員)集中精力于表現形式上。

4.可維護性高

分離視圖層和業務邏輯層也使得WEB應用更易于維護和修改。

缺點

1.完全理解MVC比較復雜。

由于MVC模式提出的時間不長,加上同學們的實踐經驗不足,所以完全理解并掌握MVC不是一個很容易的過程。

2.調試困難。

因為模型和視圖要嚴格的分離,這樣也給調試應用程序帶來了一定的困難,每個構件在使用之前都需要經過徹底的測試。

3.不適合小型,中等規模的應用程序

在一個中小型的應用程序中,強制性的使用MVC進行開發,往往會花費大量時間,并且不能體現MVC的優勢,同時會使開發變得繁瑣。

4.增加系統結構和實現的復雜性

對于簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的復雜性,并可能產生過多的更新操作,降低運行效率。

5.視圖與控制器間的過于緊密的連接并且降低了視圖對模型數據的訪問

視圖與控制器是相互分離,但卻是聯系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。

依據模型操作接口的不同,視圖可能需要多次調用才能獲得足夠的顯示數據。對未變化數據的不必要的頻繁訪問,也將損害操作性能。

MVVM

MVVM是Model-View-ViewModel的簡寫。它本質上就是MVC 的改進版。

MVVM包括view視圖層、model數據層、viewmodel層。采用雙向數據綁定,View的變動,自動反映在 ViewModel,反之亦然。

MVVM 就是將其中的View 的狀態和行為抽象化,讓我們將視圖 UI 和業務邏輯分開。其中ViewModel 就是View和Model層的粘合劑,可以取出 Model 的數據同時幫忙處理 View 中由于需要展示內容而涉及的業務邏輯。說白了,就是把原來ViewController層的業務邏輯和頁面邏輯等剝離出來放到ViewModel層

M(Model):模型層。就是業務邏輯相關的數據對象,通常從數據庫映射而來,我們可以說是與數據庫對應的model。
V(View):視圖層。就是展現出來的用戶界面。
VM(ViewModel):視圖模型層。連接view和model的橋梁。因為,Model層中的數據往往是不能直接跟View中的控件一一對應上的,所以,需要再定義一個數據對象專門對應view上的控件。而ViewModel的職責就是把model對象封裝成可以顯示和接受輸入的界面數據對象。

MVVM優點

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

1. 低耦合。視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。

2. 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。

3. 獨立開發。開發人員可以專注于業務邏輯和數據的開發(ViewModel),設計人員可以專注于頁面設計,使用Expression Blend可以很容易設計界面并生成xaml代碼。

4. 可測試。界面素來是比較難于測試的,測試可以針對ViewModel來寫。

MVC與MVVM的區別

在MVC里,View是可以直接訪問Model的,所以View里會包含Model信息以及一些業務邏輯。 MVC模型關注的是Model的不變,所以在MVC模型里,Model不依賴于View,但是 View是依賴于Model的。不僅如此,因為有一些業務邏輯在View里實現了,導致要更改View也是比較困難的,至少那些業務邏輯是無法重用的。

MVVM在概念上是真正將頁面與數據邏輯分離的模式,它把數據綁定工作放到一個JS里去實現,而這個JS文件的主要功能是完成數據的綁定,即把model綁定到UI的元素上。此外MVVM另一個重要特性雙向綁定,它更方便你去同時維護頁面上都依賴于某個字段的N個區域,而不用手動更新它們。

MVC和MVVM都是一種設計思想。 主要就是MVC中Controller演變成MVVM中的viewModel。 MVVM主要解決了MVC中大量DOM操作使頁面渲染性能降低,加載速度變慢的問題 。

MVVM與MVC最大的區別就是:它實現了View和Model的自動同步:當Model的屬性改變時,我們不用再自己手動操作Dom元素來改變View的顯示,它會自動變化。

原文鏈接:https://blog.csdn.net/m0_53206841/article/details/125824684

欄目分類
最近更新