由于公司一直都是MVC,代碼各種落后,一直想學(xué)習(xí)下MVP,所有就寫了這篇文章,記錄自己的理解與Demo(寫的有問題的地方,歡迎指點(diǎn),謝謝)
1、M--> Model,對應(yīng)邏輯處理的地方,處理完后,通過Persenter(相當(dāng)于一個(gè)紐帶,連接Model和View的一個(gè)中間橋梁)進(jìn)行回調(diào)。
2、V-->View,就是Activity/Fragment去實(shí)現(xiàn)這個(gè)接口,并且實(shí)現(xiàn)其中這個(gè)View的方法。
3、P-->Persenter,就是Model和View的一個(gè)紐帶,創(chuàng)建Persenter是傳入一個(gè)Activity(這個(gè)Activity其實(shí)就是實(shí)現(xiàn)了View的接口,然后在初始化Persenter的時(shí)候創(chuàng)建一個(gè)Model,此時(shí)Persenter就把View和Model就連接起來了)。

以下以一個(gè)登錄為例:
首先Model(主要就是干一件事,那就是登錄)

然后就是Persenter和View
其中persenter如下:
(因?yàn)镻ersenter是一個(gè)紐帶,那么從點(diǎn)擊登錄時(shí),需要將帳號和密碼傳遞到Model中去,所有此時(shí)Persenter就需要一個(gè)login(String userName,String password)的一個(gè)方法),其中l(wèi)oginSucc()和loginFail()都是回調(diào)給View層,VIew會(huì)收到通知,更新Ui。

其中View如下:
1、點(diǎn)擊登錄時(shí)顯示一個(gè)dialog;
2、登錄失敗時(shí)彈出一個(gè)toast;
3、登錄完成后關(guān)閉dialog;
4、登錄成功后跳轉(zhuǎn)到下一個(gè)Activity的方法。

再看看Model的實(shí)現(xiàn)類:
(初始化Model時(shí)傳入一個(gè)Persenter,登錄失敗,成功都進(jìn)行回調(diào)給Persenter)

再看看Persenter:
(初始化Persenter時(shí)傳入一個(gè)View,并且初始化Model),login(String userName,String password)就是顯示dialog和Model調(diào)用登錄,loginSucc()和loginFail(String msg)就回調(diào)給VIew。

最后就是Activity:
(oncreat時(shí)就初始化Persenter)
大功告成??!