MVP使用總結(jié)

本文內(nèi)容提要:

記錄自己在公司Android客戶端項(xiàng)目中MVP架構(gòu)的使用經(jīng)歷。及對(duì)其的衍生的感悟。


架構(gòu)示意圖.gif

涉及知識(shí)點(diǎn):

閱讀時(shí)間:

5分鐘

為什么使用MVP:

如題,在MVP還沒出來前卓鹿,Android開發(fā)架構(gòu)基本屬于一個(gè)無序狀態(tài)。所有的邏輯、視圖氯葬、邏輯處理等處理都在一個(gè)Activity/Fragment中。在業(yè)務(wù)快速迭代中婉陷,這樣的開發(fā)模式會(huì)導(dǎo)致代碼越來越冗長帚称,維護(hù)與擴(kuò)展難度越來越大。舉個(gè)例子秽澳,在公司的項(xiàng)目中闯睹,未重構(gòu)前的商品詳情頁就多大4000行代碼。

MVP的好處之一就是能將視圖層肝集,數(shù)據(jù)層瞻坝,邏輯層解耦。維護(hù)成本與擴(kuò)展性就自然而然的解決了杏瞻。同時(shí)所刀,MVP的架構(gòu)最大的好處就是能執(zhí)行單元測(cè)試。不是說傳統(tǒng)的開發(fā)模式不能進(jìn)行單元測(cè)試捞挥。而是其組織架構(gòu)不夠整潔浮创。單元測(cè)試既混著視圖,又有邏輯砌函。而基于MVP的開發(fā)斩披,能夠讓對(duì)邏輯層單獨(dú)進(jìn)行JUnit+Mockito,而視圖層可以使用Espresso讹俊、Robolectric進(jìn)行單元測(cè)試垦沉。

MVP實(shí)踐路線:

  • 一開始,我的MVP是針對(duì)View仍劈、Presenter厕倍、Data都寫一個(gè)接口。這樣開發(fā)下來贩疙,發(fā)現(xiàn)了這樣下會(huì)增加許多接口讹弯。接口過多也不是一個(gè)好的設(shè)計(jì)。
  • 后來受到了Google Todo MVP 的影響这溅。將三層接口都整合到了Contact中
  • 這一階段组民,我針對(duì)所有的數(shù)據(jù)傳輸,使用的是EventBus悲靴。因?yàn)樯婕暗蕉鄠€(gè)View需要監(jiān)聽同一個(gè)數(shù)據(jù)返回臭胜。本來想寫一個(gè)專門APT框架于這種情況的Bus框架。不過后來思考之后,開始讓View之間通過接口的形式相互傳遞數(shù)據(jù)比較合適庇楞。
  • DTO(Data Transfer Object)與VO(View Object)榜配。一開始,MVP各層間的傳輸使用的是DTO吕晌〉叭欤可是如果字段變了,又需要修改三個(gè)文件睛驳。因此引入了VO可以將修改降低到最少烙心。
  • 其實(shí)網(wǎng)上還有許多MVP的變種,比如把Activity變?yōu)镻層等乏沸。這些單從立意上淫茵,我就不是很贊成。因而作罷蹬跃。

感悟與總結(jié):

MVP本質(zhì)上是面對(duì)接口編程的一種實(shí)現(xiàn)而已匙瘪。不需要把它的太重。而是不是所有業(yè)務(wù)都要用mvp呢蝶缀?一開始我是固執(zhí)的認(rèn)為需要的丹喻。想想所有的代碼都能那么干凈單純是會(huì)有多棒啊翁都!可是漸漸的碍论,我體會(huì)到這“過分的設(shè)計(jì)”的下場(chǎng)。首先柄慰,我寫的MVP鳍悠,對(duì)不懂MVP的同事來看,是不好維護(hù)的坐搔。其次藏研,在簡(jiǎn)單場(chǎng)景下使用,用mvp 反而增加了它的復(fù)雜度概行。某種意義上遥倦,是很不好維護(hù)的。
我意識(shí)到了過度設(shè)計(jì)的困擾占锯。不過,我反而感到慶幸缩筛。讓我及早領(lǐng)悟這個(gè)道理消略。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞎抛,隨后出現(xiàn)的幾起案子艺演,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胎撤,死亡現(xiàn)場(chǎng)離奇詭異晓殊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伤提,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門巫俺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肿男,你說我怎么就攤上這事介汹。” “怎么了舶沛?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵嘹承,是天一觀的道長。 經(jīng)常有香客問我如庭,道長叹卷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任坪它,我火速辦了婚禮骤竹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哟楷。我一直安慰自己瘤载,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布卖擅。 她就那樣靜靜地躺著鸣奔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惩阶。 梳的紋絲不亂的頭發(fā)上挎狸,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音断楷,去河邊找鬼锨匆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冬筒,可吹牛的內(nèi)容都是我干的恐锣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼舞痰,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼土榴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起响牛,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤玷禽,失蹤者是張志新(化名)和其女友劉穎赫段,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矢赁,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糯笙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撩银。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片给涕。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜒蕾,靈堂內(nèi)的尸體忽然破棺而出稠炬,到底是詐尸還是另有隱情,我是刑警寧澤咪啡,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布首启,位于F島的核電站,受9級(jí)特大地震影響撤摸,放射性物質(zhì)發(fā)生泄漏毅桃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一准夷、第九天 我趴在偏房一處隱蔽的房頂上張望钥飞。 院中可真熱鬧,春花似錦衫嵌、人聲如沸读宙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽结闸。三九已至,卻和暖如春酒朵,著一層夾襖步出監(jiān)牢的瞬間桦锄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工蔫耽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留结耀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓匙铡,卻偏偏與公主長得像图甜,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鳖眼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,761評(píng)論 25 707
  • 前言 看了下上篇博客的發(fā)表時(shí)間到這篇博客匪凡,竟然過了11個(gè)月,罪過掘猿,罪過病游。這一年時(shí)間也是夠折騰的,年初離職跳槽到鵝廠...
    西木柚子閱讀 21,220評(píng)論 12 184
  • 5. 最佳實(shí)踐 好了終于要點(diǎn)講自己的東西了稠通,有點(diǎn)小激動(dòng)衬衬。下面這些僅表示個(gè)人觀點(diǎn),非一定之規(guī)改橘,各位看官按需取用滋尉,有說...
    SnowDragonYY閱讀 2,386評(píng)論 4 36
  • 題圖 by Greg Rakozy 身邊的朋友可能會(huì)知道,我有用心關(guān)注了很多微信公眾號(hào)飞主。 而如果你愿意問我狮惜,幾乎每...
    九度繁華閱讀 303評(píng)論 0 1
  • defDist2sql(table,data): sql='insert into {}('.format(tab...
    vcancy閱讀 762評(píng)論 0 0