說(shuō)說(shuō)MVC與MVVM

MVC

MVC模式很多都熟悉,就是模型(M)-視圖(V)-控制器(C)模式,大多都應(yīng)用在網(wǎng)頁(yè)開(kāi)發(fā)上,比較典型的如SPRING MVC,就嚴(yán)格的遵循了MVC模式來(lái)進(jìn)行開(kāi)發(fā)。模型(Model)代表了應(yīng)用程序的狀態(tài)、更新、維護(hù)、查詢后端數(shù)據(jù)庫(kù)的數(shù)據(jù)以及一些其他的原始數(shù)據(jù)等。視圖(View)就比較直觀了,它定義了用戶從應(yīng)用程序所看到的一切。它包含了用戶界面以及非可視的導(dǎo)出數(shù)據(jù)(如XML、JSON、CSV、HTML等)。控制器(Controller)接收從視圖發(fā)送過(guò)來(lái)的事件然后傳送給模型,模型處理這些事件并且同步模型中發(fā)生改變的東西到視圖去。大致示意圖如下:


MVVM

MVVM模式是從MVC模式改變而來(lái)的。大多數(shù)都支持MVVM實(shí)際上是基于MVC中的視圖和視圖的狀態(tài),但仍然和模型有互連的。在MVVM模式中,ViewModel取代了控制器。但ViewModel和Model的職責(zé)卻不同了。大致示意圖如下:



從圖上可知,現(xiàn)在視圖和模型是沒(méi)有聯(lián)系了,都是通過(guò)ViewModel來(lái)進(jìn)行互連交互的。MVVM的核心就是“數(shù)據(jù)模型數(shù)據(jù)雙向綁定”。也就是視圖的數(shù)據(jù)變化會(huì)通過(guò)ViewModel馬上修改模型的數(shù)據(jù),同樣模型的數(shù)據(jù)變化也會(huì)馬上提現(xiàn)到視圖上去。
通過(guò)對(duì)MVVM的進(jìn)一步了解以后,我們可以將示意圖表現(xiàn)如下:



從圖上可以看出,視圖和ViewModel是雙向綁定的,視圖數(shù)據(jù)改變后通過(guò)ViewModel來(lái)更新模型(Model)中數(shù)據(jù),模型更新后通知(notify)ViewModel來(lái)將改變的數(shù)據(jù)變現(xiàn)在視圖上。
當(dāng)然,我更傾向于以下示意圖中所示的,在View和ViewModel的雙向綁定中隱式的引入了binder層;

參考:淺談 MVC、MVP 和 MVVM 架構(gòu)模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容