溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android中怎么實(shí)現(xiàn)MVP模式

發(fā)布時(shí)間:2021-06-28 14:55:45 來(lái)源:億速云 閱讀:154 作者:Leah 欄目:大數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Android中怎么實(shí)現(xiàn)MVP模式,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

MVC

相信大家已經(jīng)對(duì)MVC模式再熟悉不過(guò)了。如果你還對(duì)MVC模式不熟悉的話,建議把MVC理解透之后再往下看。因?yàn)镸VP模式可以說(shuō)是MVC模式在Android開(kāi)發(fā)上演變過(guò)來(lái)的。 
Android中怎么實(shí)現(xiàn)MVP模式

MVC全稱為Model-View-Controller,是模型(Model)-視圖(View)-控制器(Controller)的縮寫。MVC開(kāi)始存在于桌面程序中,M是指業(yè)務(wù)模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,以便后續(xù)程序的維護(hù)以及更新。

對(duì)于原生的Android項(xiàng)目而言:

  • M(Model): 不要簡(jiǎn)單地把Model理解成實(shí)體類(Entity),Model應(yīng)該包含2部分功能,一部分是處理業(yè)務(wù)邏輯,例如一些Helper類;一部分是提供View顯示的數(shù)據(jù),例如一些Java Entity類。

  • V(View): 負(fù)責(zé)UI元素繪制,與用戶進(jìn)行交互。一般指的是layout目錄下的xml布局文件。

  • C(Controller): 處理與用戶交互的邏輯處理。指的是Activity或者Fragment。

為何要使用MVP

我們經(jīng)常在Activity或者Fragment中執(zhí)行控件的初始化操作以及處理控件的點(diǎn)擊事件,也就是執(zhí)行findViewById()方法和setOnClickListener()方法。這就導(dǎo)致Activity(Fragment)不是單純的Controller。隨著界面以及其邏輯的復(fù)雜度不斷提升,Activity(Fragment)的職責(zé)不斷增加,這會(huì)使得Activity(Fragment)變得十分臃腫。想想看,如果Activity或者Fragment代碼上千行的話,別說(shuō)繼續(xù)增加新功能,連維護(hù)都覺(jué)得有點(diǎn)惡心。為了給Activity(Fragment)減負(fù),MVP模式就此孕育而生。

MVP

MVC全稱為Model-View-Presenter, 是模型(Model)-視圖(View)-表示(Presenter)的縮寫。Presenter充當(dāng)Model和View之間交互的橋梁,負(fù)責(zé)將對(duì)應(yīng)的Model和View組合到一起。 
Android中怎么實(shí)現(xiàn)MVP模式

對(duì)于原生的Android項(xiàng)目而言:

  • M(Model): 跟MVC模式中是同樣的作用

  • V(View): 指的是Activity或者Fragment,負(fù)責(zé)UI元素的初始化,建議UI元素與Presenter的關(guān)聯(lián)。

  • P(Presenter): 處理與用戶交互的邏輯處理。Presenter從model層中接受數(shù)據(jù),經(jīng)過(guò)處理之后返回給VIew層。Presenter與View(Activity)之間通過(guò)接口(Interface)來(lái)交互的。

以antoniolg大神的androidmvp開(kāi)源項(xiàng)目作為栗子講解 
在項(xiàng)目目錄中一共有十個(gè)類,我就以login包作為突破點(diǎn)闡述MVP實(shí)現(xiàn)思路。 
Android中怎么實(shí)現(xiàn)MVP模式

View層中有LoginActivity和LoginView這兩個(gè)類。LoginActivity是登錄界面類;而LoginView是個(gè)接口類,根據(jù)LoginPresenterImpl類對(duì)數(shù)據(jù)的處理結(jié)果進(jìn)行UI交互。 
1)LoginView主要包含更新UI的方法,讓LoginPresenterImpl類持有其引用。這樣LoginPresenterImpl類就可以通過(guò)LoginView來(lái)更新UI。具體代碼如下: 
Android中怎么實(shí)現(xiàn)MVP模式
2)LoginActivity類主要工作是初始化UI和實(shí)現(xiàn)更新UI的方法,代碼如下: Android中怎么實(shí)現(xiàn)MVP模式

Android中怎么實(shí)現(xiàn)MVP模式

Presenter層中有LoginPresenterImpl和LoginPresenter這兩個(gè)類。LoginPresenterImpl是LoginPresenter接口的實(shí)現(xiàn)類;LoginPresenter同樣也是個(gè)接口類。 
1)LoginPresenter包含驗(yàn)證登錄信息和銷毀對(duì)象的方法。LoginActivity類可以通過(guò)其將數(shù)據(jù)傳遞給LoginPresenterImpl類。具體代碼如下: 
Android中怎么實(shí)現(xiàn)MVP模式
2)LoginPresenterImpl類實(shí)現(xiàn)驗(yàn)證登錄信息以及銷毀對(duì)象的方法,但是它內(nèi)部驗(yàn)證信息還是LoginInteractorImpl類來(lái)實(shí)現(xiàn)的。具體代碼如下: 

Android中怎么實(shí)現(xiàn)MVP模式

model層的類分別是:LoginInteractor和LoginInteractorImpl。LoginInteractor也是個(gè)接口。LoginInteractorImpl類實(shí)現(xiàn)了LoginInteractor中的方法 
1)LoginInteractor中的方法是真正處理數(shù)據(jù),即驗(yàn)證信息是否符合標(biāo)準(zhǔn)。LoginInteractor會(huì)把LoginInteractorImpl處理數(shù)據(jù)的結(jié)果返回給LoginPresenterImpl。 
Android中怎么實(shí)現(xiàn)MVP模式
2)LoginInteractorImpl對(duì)登錄信息進(jìn)行驗(yàn)證,就是進(jìn)行判空操作。如果需要請(qǐng)求服務(wù)器來(lái)判斷登錄是否成功,那么這里也是進(jìn)行網(wǎng)絡(luò)操作。 

Android中怎么實(shí)現(xiàn)MVP模式

如果你能把上面的代碼拿下,那么你對(duì)MVP模式已經(jīng)理解差不多了。你自己再把剩余的代碼看一遍,舉一反三,就可以打通了MVP這道脈。

進(jìn)階

響應(yīng)式編程庫(kù)RxJava已經(jīng)火的不得了,其好處是很大幅度的降低代碼量。MVP和RxJava可以無(wú)縫對(duì)接,兩者算是絕配。

上述就是小編為大家分享的Android中怎么實(shí)現(xiàn)MVP模式了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI