Google官方MVP項(xiàng)目小結(jié)

1亮隙、Github地址:https://github.com/googlesamples/android-architecture

里面有幾個(gè)項(xiàng)目虑润,這里下載的 todo-mvp 是比較基礎(chǔ)的項(xiàng)目犬庇。

效果圖

2父丰、項(xiàng)目結(jié)構(gòu)

項(xiàng)目結(jié)構(gòu)

這里先不管它們都是干嘛的哀九,通過觀察發(fā)現(xiàn)包下都包含這幾類:
xxxActivity荡碾,
xxxFragment晶府,
xxxContract星持,
xxxPresenter危喉。
所以這個(gè)項(xiàng)目應(yīng)該是按照不同界面來組織的宋渔。

其中xxxActivity,xxxFragment就是MVP中的V辜限,xxxPresenter就是MVP中的P了皇拣。xxxContract是什么呢?以addedittask包下的AddEditTaskContract.java為例看下代碼

public interface AddEditTaskContract {

    interface View extends BaseView<Presenter> {

        void showEmptyTaskError();

        void showTasksList();

        ...
    }

    interface Presenter extends BasePresenter {

        void createTask(String title, String description);

        void updateTask( String title, String description);

        ...
    }
}

是一個(gè)接口薄嫡,里面又定義了兩個(gè)接口氧急,并分別繼承了BaseView類和BasePersenter類

BaseView類

public interface BaseView<T> {

    void setPresenter(T presenter);    
}

BasePersenter類

public interface BasePresenter {

    void start();

}

那么View和Persenter又被誰實(shí)現(xiàn)了呢?
Persenter毫無疑問是被XXXPersenter實(shí)現(xiàn)了毫深,View是不是XXXActivity實(shí)現(xiàn)了呢吩坝?不是的,BaseView被XXXFragment實(shí)現(xiàn)了费什,而XXXActivity是負(fù)責(zé)創(chuàng)建XXXFragment和XXXPersenter钾恢,并將它們聯(lián)系起來的。

最后是MVP的M了鸳址,它在項(xiàng)目的data包下

M

其中Task.java是存放數(shù)據(jù)的實(shí)體類瘩蚪,
TasksDataSource是個(gè)接口,里面有定義了兩個(gè)接口稿黍,用來和Personter聯(lián)系疹瘦。

TasksDataSource

public interface TasksDataSource {

    interface LoadTasksCallback {

        void onTasksLoaded(List<Task> tasks);

        void onDataNotAvailable();
    }

    interface GetTaskCallback {

        void onTaskLoaded(Task task);

        void onDataNotAvailable();
    }

    void getTasks(@NonNull LoadTasksCallback callback);

    void getTask(@NonNull String taskId, @NonNull GetTaskCallback callback);
    
    ...
}

TasksRepository實(shí)現(xiàn)了TasksDataSource,負(fù)責(zé)處理 Task 數(shù)據(jù)巡球。

public class TasksRepository implements TasksDataSource {

    ...

}

小結(jié)

這個(gè)項(xiàng)目的結(jié)構(gòu)就差不多完了言沐,流程分為這幾步
1.Activity 將分別實(shí)現(xiàn)了 Persenter 和 View 的 XXXPersonter 和 XXXFragment 聯(lián)系起來邓嘹。
2.Persenter 通過 TasksDataSource 內(nèi)的接口和 TasksRepository 聯(lián)系起來。
3.XXXFragment觸發(fā)點(diǎn)擊事件险胰,調(diào)用XXXPersenter 方法汹押,XXXPersenter處理業(yè)務(wù)邏輯(例如效果圖第二步,要判斷Title或內(nèi)容是否為空)起便,XXXPersonter再通過 TasksReoisitory 將數(shù)據(jù)存入 Task中棚贾。
4.TasksReoisitory 通過回調(diào)再將 Task 數(shù)據(jù) 返回給 XXXPersenter,XXXPersenter 再專遞給 XXXFragment 完成數(shù)據(jù)展示

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末榆综,一起剝皮案震驚了整個(gè)濱河市妙痹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鼻疮,老刑警劉巖怯伊,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異判沟,居然都是意外死亡耿芹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門挪哄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猩系,“玉大人,你說我怎么就攤上這事中燥。” “怎么了塘偎?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵疗涉,是天一觀的道長。 經(jīng)常有香客問我吟秩,道長咱扣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任涵防,我火速辦了婚禮闹伪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壮池。我一直安慰自己偏瓤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布椰憋。 她就那樣靜靜地躺著厅克,像睡著了一般。 火紅的嫁衣襯著肌膚如雪橙依。 梳的紋絲不亂的頭發(fā)上证舟,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天硕旗,我揣著相機(jī)與錄音,去河邊找鬼女责。 笑死漆枚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抵知。 我是一名探鬼主播墙基,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼辛藻!你這毒婦竟也來了碘橘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤吱肌,失蹤者是張志新(化名)和其女友劉穎痘拆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氮墨,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纺蛆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了规揪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桥氏。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖猛铅,靈堂內(nèi)的尸體忽然破棺而出字支,到底是詐尸還是另有隱情,我是刑警寧澤奸忽,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布堕伪,位于F島的核電站,受9級(jí)特大地震影響栗菜,放射性物質(zhì)發(fā)生泄漏欠雌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一疙筹、第九天 我趴在偏房一處隱蔽的房頂上張望富俄。 院中可真熱鬧,春花似錦而咆、人聲如沸霍比。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桂塞。三九已至,卻和暖如春馍驯,著一層夾襖步出監(jiān)牢的瞬間阁危,已是汗流浹背玛痊。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狂打,地道東北人擂煞。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像趴乡,于是被迫代替她去往敵國和親对省。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,324評(píng)論 25 707
  • 人笨學(xué)的慢啊晾捏。蒿涎。抓緊學(xué)習(xí)MVP 網(wǎng)上MVP的學(xué)習(xí)資料也是多如牛毛,來看看谷歌爸爸是怎么教我們MVP的吧 項(xiàng)目介紹 ...
    hongjay閱讀 2,686評(píng)論 1 21
  • 我知道這是一個(gè)不公平的時(shí)代,但慶幸的是胖齐,我們有一個(gè)公平的事還能去做玻淑,那就是去讀書,去學(xué)習(xí)呀伙。抓住一切時(shí)間和機(jī)會(huì)去學(xué)習(xí)...
    水木的小院閱讀 295評(píng)論 0 4
  • 文筆訓(xùn)練營課4 【要點(diǎn)】1补履、阻礙文筆流暢的三個(gè)bug:的的不休、字音重復(fù)剿另、單雙音偏廢箫锤。2、四象限 作業(yè) 1. 對(duì)對(duì)...
    舒亦卷閱讀 179評(píng)論 4 1
  • 昨天看過了張化橋老師的《影子銀行內(nèi)幕雨女,下一個(gè)次貸危機(jī)的源頭麻汰?》感觸頗多。影子銀行并不僅僅指地下錢莊戚篙,而是包括除了銀...
    胖主任閱讀 447評(píng)論 0 0