Android MVP模式

文章分為以下三個部分

一 .MVP 的概念
二 .MVP 的優(yōu)缺點(diǎn)
三 .MVP 解決存在的問題

一 MVP 的概念

image.png

MVP 簡單介紹

View層只負(fù)責(zé)視圖的顯示以及更新
Model只負(fù)責(zé)數(shù)據(jù)的獲?。ㄈ缇W(wǎng)絡(luò)請求等)
Presenter層則是負(fù)責(zé)View和Model通信的橋梁,接收model請求的結(jié)果后返回給View,或者接收View層的信息后到Model層進(jìn)行請求,以及一些邏輯

二 MVP優(yōu)缺點(diǎn)

MVP優(yōu)點(diǎn):

模型與視圖完全分離,我們可以修改視圖而不影響模型;
可以更高效地使用模型,因?yàn)樗械慕换ザ及l(fā)生在一個地方——Presenter內(nèi)部;
我們可以將一個Presenter用于多個視圖,而不需要改變Presenter的邏輯。這個特性非常的有用,因?yàn)橐晥D的變化總是比模型的變化頻繁;
如果我們把邏輯放在Presenter中,那么我們就可以脫離用戶接口來測試這些邏輯(單元測試)。

MVP缺點(diǎn):

視圖和Presenter的交互會過于頻繁,使得他們的聯(lián)系過于緊密。也就是說,一旦視圖變更了,presenter也要變更。

三 MVP 解決存在的問題

1.會造成接口類爆炸問題。使用MVP模式去構(gòu)建項(xiàng)目,會造成類文件和接口文件的過多,進(jìn)而增大包的體積
解決 寫一個Contract接口,然后把與MVP相關(guān)接口全部列入到里面去

2.會造成內(nèi)存泄漏的問題。當(dāng)用戶關(guān)閉了View層,但這時Model層如果仍然在進(jìn)行耗時操作,因?yàn)镻resenter層也持有View層的引用,所以造成垃圾回收器無法對View層進(jìn)行回收,這樣一來,就造成了內(nèi)存泄漏。
解決 可以重寫onDestroy()方法,在View銷毀時強(qiáng)制回收掉Presenter;或是采用弱引用的方式
(引用進(jìn)行引用之前,都需要判斷引用不為空,以防止空指針異常。)

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

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

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