1、MVVM是一種架構(gòu)模式,而DataBinding是一個(gè)實(shí)現(xiàn)數(shù)據(jù)和UI綁定的框架,是構(gòu)建MVVM模式的一個(gè)工具。
創(chuàng)新互聯(lián)建站憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都10年的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都成百上千中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。
2、MVVM 是 Model-View-ViewModel 的簡(jiǎn)寫。和 MVP 模式相比,MVVM 模式用 ViewModel 替換了 Presenter ,其他層基本上與 MVP 模式一致,ViewModel 可以理解成 是 View 的數(shù)據(jù)模型和 Presenter 的合體。
3、MVP(Model-View-Presenter)是MVC的改良模式。與MVP一樣,實(shí)現(xiàn)了視圖、模型、控制的解耦,重點(diǎn)是改變的通信方式。MVVM實(shí)現(xiàn)了數(shù)據(jù)與UI的雙重綁定,其中 DataBinding 是實(shí)現(xiàn)MVVM的關(guān)鍵工具。
4、在ImageView內(nèi)自定義了一個(gè)url屬性,此時(shí)需使用BindingAdapter去自定義實(shí)現(xiàn),實(shí)現(xiàn)起來(lái)很簡(jiǎn)單:至此一個(gè)很簡(jiǎn)單的MVVM架構(gòu)的小demo就實(shí)現(xiàn)了。
從上面這個(gè)結(jié)構(gòu)來(lái)看,Android本身的設(shè)計(jì)還是符合MVC架構(gòu)的,但是Android中純粹作為View的XML視圖功能太弱,我們大量處理View的邏輯只能寫在Activity中,這樣Activity就充當(dāng)了View和Controller兩個(gè)角色,直接導(dǎo)致Activity中的代碼大爆炸。
通過(guò)FinalActivity,可以通過(guò)注解的方式進(jìn)行綁定UI和事件。通過(guò)FinalBitmap,可以方便的加載Bitmap圖片,而無(wú)需考慮OOM等問(wèn)題。通過(guò)FinalDB模塊,通過(guò)一行代碼就可以對(duì)Android的SQlite數(shù)據(jù)庫(kù)進(jìn)行增刪改查。
MVP下Activity和Fragment體現(xiàn)在了這一層,Activity一般也就做加載UI視圖、設(shè)置監(jiān)聽(tīng)再交由Presenter處理的一些工作,所以也就需要持有相應(yīng)Presenter的引用。
MVP代表Model,View和Presenter。下圖是基于MVP架構(gòu)的模式之一。View是UI線程。Presenter是View與Model之間的適配器。UseCase或者Domain在Model層中,負(fù)責(zé)從實(shí)體獲取或載入數(shù)據(jù)。
MVC、MVP和MVVM是常見(jiàn)的三種架構(gòu)設(shè)計(jì)模式,當(dāng)前MVP和MVVM的使用相對(duì)比較廣泛,當(dāng)然MVC也并沒(méi)有過(guò)時(shí)之說(shuō)。
MVP(Model-View-Presenter)是MVC的改良模式。與MVP一樣,實(shí)現(xiàn)了視圖、模型、控制的解耦,重點(diǎn)是改變的通信方式。MVVM實(shí)現(xiàn)了數(shù)據(jù)與UI的雙重綁定,其中 DataBinding 是實(shí)現(xiàn)MVVM的關(guān)鍵工具。
MVC、MVP、MVVM這些模式是為了解決開(kāi)發(fā)過(guò)程中的實(shí)際問(wèn)題而提出來(lái)的,目前作為主流的幾種架構(gòu)模式而被廣泛使用。
MVVM ,MVVM 模式將 Presenter 改名為 ViewModel,基本上與 MVP 模式完全 一致。唯一的區(qū)別是,它采用雙向綁定(data-binding):View的變動(dòng),自動(dòng)反映在 ViewModel,反之亦然。Angular 和 Ember 都采用這種模式。
MVP下Activity和Fragment體現(xiàn)在了這一層,Activity一般也就做加載UI視圖、設(shè)置監(jiān)聽(tīng)再交由Presenter處理的一些工作,所以也就需要持有相應(yīng)Presenter的引用。
接下來(lái),我們先來(lái)看看什么是MVVM,然后再一步一步來(lái)設(shè)計(jì)整個(gè)MVVM框架。MVC、MVP、MVVM 首先,我們先大致了解下Android開(kāi)發(fā)中常見(jiàn)的模式。MVC View:XML布局文件。Model:實(shí)體模型(數(shù)據(jù)的獲取、存儲(chǔ)、數(shù)據(jù)狀態(tài)變化)。
在Android開(kāi)發(fā)中,如果你不考慮架構(gòu)的話,Activity類往往會(huì)越來(lái)越大。這是因?yàn)椋贏ndroid中,允許View和其它線程共存于Activity內(nèi)。其實(shí)最大的問(wèn)題莫過(guò)于 在Activity中同時(shí)存在業(yè)務(wù)邏輯和UI邏輯 。這會(huì)增加測(cè)試和維護(hù)的成本。
通過(guò)FinalActivity,可以通過(guò)注解的方式進(jìn)行綁定UI和事件。通過(guò)FinalBitmap,可以方便的加載Bitmap圖片,而無(wú)需考慮OOM等問(wèn)題。通過(guò)FinalDB模塊,通過(guò)一行代碼就可以對(duì)Android的SQlite數(shù)據(jù)庫(kù)進(jìn)行增刪改查。
MVVM:Model-View-ViewModel,是對(duì)MVP的一個(gè)優(yōu)化模式,采用了雙向綁定:View的變動(dòng),自動(dòng)反映在ViewModel,反之亦然。面對(duì)眾多的架構(gòu)模式你會(huì)選擇哪個(gè)?MVC,MVP還是MVVM?越高級(jí)的模式復(fù)雜性越高,實(shí)現(xiàn)起來(lái)也越難。
android:text=登錄//LinearLayout No新建LoginPresenter。我們面向接口編程,所以,新建一個(gè)Presenter接口,在該Demo是沒(méi)有什么方法,這是為了可擴(kuò)展性考慮。
文章題目:Android轉(zhuǎn)MVP Android怎樣轉(zhuǎn)后端
瀏覽地址:http://aaarwkj.com/article37/diijdpj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、面包屑導(dǎo)航、商城網(wǎng)站、網(wǎng)站設(shè)計(jì)、電子商務(wù)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)