日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

关于mvc、mvp和mvvm的理解

發(fā)布時間:2025/3/8 c/c++ 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于mvc、mvp和mvvm的理解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考文章1:blog.csdn.net/chun_long/a…

參考文章2:blog.csdn.net/napolunyish…

(1)MVC框架:

  • M-Model : 業(yè)務(wù)邏輯和實體模型(biz/bean)
  • V-View : 布局文件(XML)
  • C-Controller : 控制器(Activity)
? ? 過程:控制器(C)控制頁面路由和一些頁面交互,傳給模型(M),模型再傳給布局(V)顯示頁面,如果頁面發(fā)生交互,頁面?zhèn)鹘o控制器(C)。

? ? 缺點:很多交互邏輯在C在處理,導(dǎo)致項目中C的代碼臃腫。

(2)MVP框架:


  • M-Model : 業(yè)務(wù)邏輯和實體模型(biz/bean)
  • V-View : 布局文件(XML)和Activity
  • P-Presenter : 完成View和Model的交互

? ? 過程:MVP框架相對于MVC框架做了較大的改變,將Activity當(dāng)做View使用,代替MVC框架中的C的是P,對比MVC和MVP的模型圖可以發(fā)現(xiàn)變化最大的是View層和Model層不在直接通信,所有交互的工作都交由Presenter層來解決。既然兩者都通過Presenter來通信,為了復(fù)用和可拓展性,MVP框架基于接口設(shè)計。

? ?缺點:

  • 接口過多,一定程度影響了編碼效率。
  • 業(yè)務(wù)邏輯抽象到Presenter中,較為復(fù)雜的界面Activity代碼量依然會很多。
  • 導(dǎo)致Presenter的代碼量過大。
  • (3)MVC框架:


    ? ? 過程:MVP框架相對于MVC框架做了較大的改變,將Activity當(dāng)做View使用,代替MVC框架中的C的是P,對比MVC和MVP的模型圖可以發(fā)現(xiàn)變化最大的是View層和Model層不在直接通信,所有交互的工作都交由Presenter層來解決。既然兩者都通過Presenter來通信,為了復(fù)用和可拓展性,MVP框架基于接口設(shè)計。

    ? ? 優(yōu)點:

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

    ? ? 2. 低耦合。

    (4)共同點和區(qū)別

    共同點:

  • Model就是領(lǐng)域模型,數(shù)據(jù)對象,同時,提供外部對應(yīng)用程序數(shù)據(jù)的操作的接口,也可能在數(shù)據(jù)變化時發(fā)出變更通知。Model不依賴于View的實現(xiàn),只要外部程序調(diào)用Model的接口就能夠?qū)崿F(xiàn)對數(shù)據(jù)的增刪改查。
  • View就是UI層,提供對最終用戶的交互操作功能,包括UI展現(xiàn)代碼及一些相關(guān)的界面邏輯代碼。
  • 區(qū)別:

    ? ? 三者的差異在于如何粘合View和Model,實現(xiàn)用戶的交互操作以及變更通知。

  • Controller接收View的操作事件,根據(jù)事件不同,或者調(diào)用Model的接口進(jìn)行數(shù)據(jù)操作,或者進(jìn)行View的跳轉(zhuǎn),從而也意味著一個Controller可以對應(yīng)多個View。Controller對View的實現(xiàn)不太關(guān)心,只會被動地接收,Model的數(shù)據(jù)變更不通過Controller直接通知View,通常View采用觀察者模式監(jiān)聽Model的變化。
  • Presenter,與Controller一樣,接收View的命令,對Model進(jìn)行操作;與Controller不同的是Presenter會反作用于View,Model的變更通知首先被Presenter獲得,然后Presenter再去更新View。一個Presenter只對應(yīng)于一個View。根據(jù)Presenter和View對邏輯代碼分擔(dān)的程度不同,這種模式又有兩種情況:Passive View和Supervisor Controller。
  • ViewModel,注意這里的“Model”指的是View的Model,跟上面那個Model不是一回事。所謂View的Model就是包含View的一些數(shù)據(jù)屬性和操作的這么一個東東,這種模式的關(guān)鍵技術(shù)就是數(shù)據(jù)綁定(data binding),View的變化會直接影響ViewModel,ViewModel的變化或者內(nèi)容也會直接體現(xiàn)在View上。這種模式實際上是框架替應(yīng)用開發(fā)者做了一些工作,開發(fā)者只需要較少的代碼就能實現(xiàn)比較復(fù)雜的交互。
  • 總結(jié):

    MVP和MVVM完全隔離了Model和View,但是在有些情況下,數(shù)據(jù)從Model到ViewModel或者Presenter的拷貝開銷很大,可能也會結(jié)合MVC的方式。




    轉(zhuǎn)載于:https://juejin.im/post/5aead36c5188256717762538

    總結(jié)

    以上是生活随笔為你收集整理的关于mvc、mvp和mvvm的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。