谷歌官方MVP Contract分析

目前Android開發(fā)比較流行的是MVP開發(fā)架構(gòu),與MVC不同的是把Activity、Fragment等作為View層,與Android平臺相關(guān)的東西基本上都被隔離在View層,Presenter負(fù)責(zé)處理業(yè)務(wù)邏輯和調(diào)度View和Model,Presenter的理想境界都是純Java的東西,數(shù)據(jù)加載、網(wǎng)絡(luò)請求看作是Model,還是原來的Model。

關(guān)于MVP網(wǎng)上的寫法很多,一直以為大家也比較關(guān)注,由于使用了MVP架構(gòu),接口會明顯變多,會有一種本來很簡單幾行的代碼的事,反而寫很多,那我們來看看GOOGLE是怎么做的吧。

項(xiàng)目地址:https://github.com/googlesamples/android-architecture

首先我們看到項(xiàng)目是以功能模塊劃分的,估計(jì)大多數(shù)同學(xué)喜歡文件類型來劃分吧,我還是比較喜歡用功能模塊來劃分,個(gè)人喜好問題。


眼神好的同學(xué)可能已經(jīng)看到了最下邊兩個(gè)接口了BasePresenter和BaseView
那就從他們?nèi)胧趾昧耍?br> BaseView: 所有View的父接口,

public interface BaseView<T>
{    
    void setPresenter(T presenter);
}

BaseView中有一個(gè)泛型,其實(shí)就是Presenter了,是用于Presenter向View傳值,得到Presenter的引用,這樣在View中就可以調(diào)用Presenter的方法來實(shí)現(xiàn)一些功能了,比如向Presenter請求數(shù)據(jù),。

BasePresenter: BasePresnter是所有Presenter的父接口,只有一個(gè)start()方法,用于在onResume()中來看代碼:

public interface BasePresenter 
{    
    void start();
}

在谷歌官方的MVP中還有一個(gè)比較有意思的就是Contract了,這個(gè)類似合同類的接口把P和V的所有方法全部寫在一起,看起來代碼格外清楚,所有的功能清清楚楚,其實(shí)只要看這個(gè)Contract差不多所有的功能就已經(jīng)有所了解了,如圖。


BaseView.png

這里就不再過多的介紹細(xì)節(jié)問題,關(guān)鍵還是要看代碼,谷歌的代碼水平確實(shí)高,自己看了也收獲頗豐。

總結(jié):谷歌的mvp與其他的不同的是多了一個(gè)Contract,當(dāng)接口變多了,Contract優(yōu)勢明顯出來了,一目了然,相比寫一個(gè)個(gè)接口把他們都寫在一起這種做法還是不錯(cuò)的。

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

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

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