建造者模式實戰(zhàn)--Retrofit二次封裝(二)

前言

需求是常變得纠吴,在實踐中往往會發(fā)現(xiàn)自己開發(fā)的庫會有這樣或者那樣的不足十绑,然而聚至,碰到網(wǎng)絡請求這樣的庫,會在最少幾十個位置調(diào)用本橙,我們肯定不想改完請求庫的扳躬,還要去改已經(jīng)調(diào)用了的地方全改一遍,這就失去我們二次封裝的本意了甚亭。

要做到不用再去改已經(jīng)調(diào)用的地方坦报,需要注意幾個方面呢?
1.類名狂鞋、類的所在位置不能刪改片择。
2.方法名,方法傳參骚揍,方法返回類型 不能刪改字管。
3.public 的成員變量名字和類型不能刪改。
4.修飾符作用域不能變小信不,比如public 改成private 是不行的嘲叔。
5.類不可改成接口,接口可改成類

怎么做到呢抽活?很簡單硫戈,使用java的方法重載來解決?今天我就給大家實例演示怎么根據(jù)需求添加代碼的下硕。

需求

在使用自己封裝的 網(wǎng)絡請求庫 時丁逝,發(fā)現(xiàn)還是有很多不足的汁胆,所以給自己定了幾個需要修改的方向。

1.有些請求并不需要設置緩存 所以 改為 想要得到緩存時霜幼,才實現(xiàn)onCache()方法
2.有時候嫩码,當請求異常時,才取出緩存顯示罪既,此時铸题,希望在onFailure()方法中,也返回緩存數(shù)據(jù)
3.希望返回的結果可以是已經(jīng)解析完成的實體類
4.加入文件上傳功能

具體做法

1.讓onCache() 和 onFailure()方法 在自己需要時才實現(xiàn)

這個很好解決琢感,把接口改成抽象類丢间,即可 看圖說話;

1.png

2.再請求出現(xiàn)異常時驹针,在onFailure()方法中烘挫,返回緩存數(shù)據(jù)

解決辦法:使用方法重載就可以了,OnResultListener 的修改看第一張圖牌捷,然后再 handlerError();調(diào)用方法即可,如下圖


2.png

3.放回的結果是已經(jīng)解析完成的實體類

因為json 有JsonObject 和 JSONArray 兩種(Retrofit2.0官方默認的只有JSONObject 一種,如果返回數(shù)據(jù)是JSONArray 則會報錯) 所以我在Builder類添加新的參數(shù)涡驮,用來判斷返回json的格式類型暗甥。而解析json數(shù)據(jù),我采用的是國內(nèi)號稱解析jison數(shù)據(jù)最快的fastJson來實現(xiàn)


3.png

在此處捉捅,buider的優(yōu)點就被發(fā)揮出來了撤防,當我們要擴展功能的時候,post方法和get方法都沒有發(fā)生變化棒口,不會影響到歷史調(diào)用寄月。而又擴展了自己需要的功能。相當給力无牵。

4.修改后的使用

4.png

結語:當然還可以在builder類添加一個方法漾肮,擴展一個顯示默認的WaitDialog的功能,只要注意文章開頭提到的五大要求茎毁。

項目地址:點此查看

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末克懊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子七蜘,更是在濱河造成了極大的恐慌谭溉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橡卤,死亡現(xiàn)場離奇詭異扮念,居然都是意外死亡,警方通過查閱死者的電腦和手機碧库,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門柜与,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巧勤,“玉大人,你說我怎么就攤上這事旅挤√吖兀” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵粘茄,是天一觀的道長签舞。 經(jīng)常有香客問我,道長柒瓣,這世上最難降的妖魔是什么儒搭? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮芙贫,結果婚禮上搂鲫,老公的妹妹穿的比我還像新娘。我一直安慰自己磺平,他們只是感情好魂仍,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拣挪,像睡著了一般擦酌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菠劝,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天赊舶,我揣著相機與錄音,去河邊找鬼赶诊。 笑死笼平,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的舔痪。 我是一名探鬼主播寓调,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锄码!你這毒婦竟也來了捶牢?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤巍耗,失蹤者是張志新(化名)和其女友劉穎秋麸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炬太,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡灸蟆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炒考。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡可缚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斋枢,到底是詐尸還是另有隱情帘靡,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布瓤帚,位于F島的核電站描姚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏戈次。R本人自食惡果不足惜轩勘,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怯邪。 院中可真熱鬧绊寻,春花似錦、人聲如沸悬秉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽和泌。三九已至村缸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間允跑,已是汗流浹背王凑。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工搪柑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留聋丝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓工碾,卻偏偏與公主長得像弱睦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子渊额,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫况木、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,105評論 4 62
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理旬迹,服務發(fā)現(xiàn)火惊,斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 前言 多年以前自學Java奔垦,在本地做了一些筆記屹耐。最近幾年流行播客,一方面防止丟失椿猎,一方面可以幫助其他小伙伴...
    chaohx閱讀 1,033評論 0 3
  • 泣きながら微笑んで(笑中帶淚) 作詞:秋元康作曲:井上ヨシマサ sa shi da shi ta sa yo na...
    binarystar閱讀 1,311評論 0 0
  • 昨晚睡前看到貓叔公眾號里發(fā)的晨讀材料來源書單,抱著自己心里一直有的疑問從頭看到尾按灶。疑問是什么症革?是發(fā)現(xiàn)晨讀材料中的來...
    卡布的書影世界閱讀 183評論 0 1