首先 我們先來(lái)介紹一下
MVP模式
是MVC模式在Android上的一種變體秕噪,要介紹MVP就得先介紹MVC磷杏。在MVC模式中,Activity應(yīng)該是屬于View這一層路星。而實(shí)質(zhì)上偎痛,它既承擔(dān)了View啊犬,同時(shí)也包含一些Controller的東西在里面俊扳。這對(duì)于開(kāi)發(fā)與維護(hù)來(lái)說(shuō)不太友好菊值,耦合度大高了覆糟。把Activity的View和Controller抽離出來(lái)就變成了View和Presenter刻剥,這就是MVP模式。
MVC模式
MVC模式的結(jié)構(gòu)分為三部分滩字,實(shí)體層的Model造虏,視圖層的View,以及控制層的Controller麦箍。其中M層處理數(shù)據(jù)漓藕,業(yè)務(wù)邏輯等;V層處理界面的顯示結(jié)果挟裂;C層起到橋梁的作用享钞,來(lái)控制V層和M層通信以此來(lái)達(dá)到分離視圖顯示和業(yè)務(wù)邏輯層。
Model:Bean實(shí)體類(lèi)话瞧,保存解析實(shí)例數(shù)據(jù)
View:就是我們的UI界面
Controller:是控制VIew與Model的交互
缺點(diǎn):在Android開(kāi)發(fā)中嫩与,Activity并不是一個(gè)標(biāo)準(zhǔn)的MVC模式中的Controller,它的首要職責(zé)是加載應(yīng)用的布局和初始化用戶 界面交排,并接受并處理來(lái)自用戶的操作請(qǐng)求划滋,進(jìn)而作出響應(yīng)。隨著界面及其邏輯的復(fù)雜度不斷提升埃篓,Activity類(lèi)的職責(zé)不斷增加处坪,以致變得龐大臃腫。
MVP模式
MVP框架由3部分組成:View負(fù)責(zé)顯示,Presenter負(fù)責(zé)邏輯處理同窘,Model提供數(shù)據(jù)玄帕。在MVP模式里通常包含3個(gè)要素(加上View interface是4個(gè)):
View:負(fù)責(zé)繪制UI元素、與用戶進(jìn)行交互(在Android中體現(xiàn)為Activity)
Model:負(fù)責(zé)存儲(chǔ)想邦、檢索裤纹、操縱數(shù)據(jù)(有時(shí)也實(shí)現(xiàn)一個(gè)Model interface用來(lái)降低耦合)
Presenter:作為View與Model交互的中間紐帶,處理與用戶交互的負(fù)責(zé)邏輯丧没。
*View interface:需要View實(shí)現(xiàn)的接口鹰椒,View通過(guò)View interface與Presenter進(jìn)行交互,降低耦合呕童,方便進(jìn)行單元測(cè)試
MVP的優(yōu)點(diǎn):
1漆际、模型與視圖完全分離,我們可以修改視圖而不影響模型夺饲;
2奸汇、可以更高效地使用模型,因?yàn)樗械慕换ザ及l(fā)生在一個(gè)地方——Presenter內(nèi)部往声;
3擂找、我們可以將一個(gè)Presenter用于多個(gè)視圖,而不需要改變Presenter的邏輯浩销。這個(gè)特性非常的有用婴洼,因?yàn)橐晥D的變化總是比模型的變化頻繁;
4撼嗓、如果我們把邏輯放在Presenter中柬采,那么我們就可以脫離用戶接口來(lái)測(cè)試這些邏輯(單元測(cè)試)。
下面就讓我們且警;來(lái)就行封裝
首先是BaseView
在實(shí)現(xiàn)的方法中粉捻,進(jìn)行l(wèi)oging加載、和標(biāo)題的設(shè)置 還有請(qǐng)求接口錯(cuò)誤日志
所有Presenter的基類(lèi) view 的綁定在這里主要進(jìn)行了綁定View和銷(xiāo)毀VIew
在這里還可以可以優(yōu)化一下就是View 使用弱引用
public void attachView(V view) {
this.weakView =new WeakReference(view);
}
今天就先到這里? 這里封裝的就是基本的基類(lèi)