一、寫(xiě)在前面

     講道理,這次是真的筆者很久都沒(méi)有更新blog了,主要最近維護(hù)的框架問(wèn)題也是層出不窮,而且對(duì)技術(shù)交流群的解答也讓我身心疲憊,所以在這里跟關(guān)注我的人說(shuō)聲抱歉,沒(méi)有定期給你們帶來(lái)福利,那么這里就給大家?guī)?lái)一個(gè)重磅福利:愛(ài)吖妹紙——Retrofit & RxJava & MVP & Butterknife 的完整App.

     講到最近讓我身心疲憊的問(wèn)題解答,無(wú)疑是讓我在開(kāi)源的路上越走越遠(yuǎn),雖然我不是技術(shù)大牛,卻依然被一些很簡(jiǎn)單的問(wèn)題輪番轟炸,其實(shí)筆者的內(nèi)心真的是拒絕的。不得不說(shuō),寫(xiě)給技術(shù)群內(nèi)的你和群主,為什么你提問(wèn),而總沒(méi)人回你!寫(xiě)的挺好。

回到頂部

二、概述

     廢話也不多說(shuō),對(duì)于MVP(Model View Presenter),我相信大多數(shù)人都能說(shuō)出一些的,“MVC的演化版本”,“讓Model和View完全解耦”等等,但用過(guò)MVP的人一定會(huì)覺(jué)得,在Android中,代碼很清晰,不過(guò)多了很多類(lèi)。對(duì)于大多數(shù)人而言,在看MVP的Demo的時(shí)候,一眼便是慢慢的nice,然而讓自己來(lái)寫(xiě)個(gè)例子,卻很頭疼寫(xiě)不出來(lái)。但的確MVC模式寫(xiě)起來(lái)更加像是順?biāo)浦?。只需要把自己的業(yè)務(wù)邏輯一股腦的放進(jìn)Activity就成功完事兒。

     不得不說(shuō),之前我們項(xiàng)目中的確也是用的MVC在編寫(xiě)的。很簡(jiǎn)單的會(huì)發(fā)現(xiàn)隨便一個(gè)Activity代碼都是幾百上千行,甚至還有一萬(wàn)行以上的??雌饋?lái)的確那么一回事兒,但是細(xì)想這個(gè)View對(duì)于布局文件,其實(shí)能做的事情特別少,實(shí)際上關(guān)于該布局文件中的數(shù)據(jù)綁定的操作,事件處理的操作都在Activity中,造成了Activity既想View又像Controller,鄙棄代碼上的不美觀來(lái)說(shuō),對(duì)于后面的閱讀代碼真的是吃力。

     不信?你瞧瞧。

     也許業(yè)務(wù)邏輯比較簡(jiǎn)單的功能用MVC沒(méi)什么,但是想沒(méi)想過(guò),如果你產(chǎn)品后面改需求怎么辦?是的,你接受產(chǎn)品需求的強(qiáng)奸,但還是只有忍辱偷生。在日