如何合理封裝你的輪子、飛機、大炮(以封裝OkHttp爲例)

前言

對於程序員來講,不少時候,咱們都在造房子,從學會框架或者是學會構建整個項目以後,慢慢的咱們就會以爲本身在作的事情是一種重複勞動,不少時候只不過是換個面孔而已。而更快的造房子,造好看的房子多是進一步你想要作的。
封裝
多是你要學會的第一步,它能幫你學會造出你須要的合適的工具,而這些工具能幫你更快的造出你想要的房子。git

 

封裝的定義

我對封裝的定義 ———— 將項目中須要屢次使用,或者是重複勞動,或者是複雜且難看的代碼,打包在一塊兒(抽離出來)做爲一個通用的東西來使用程序員

封裝能夠是對本身寫的代碼進行封裝,也能夠是對別人寫的工具或者是框架進行封裝,均可以。俗話說的好,寫代碼就是:要不就是將別人的輪子拿來用,要不就本身造輪子給別人用。別人的輪子不夠用,就改裝成飛機大炮本身用。github

 

封裝的意義

一、減小重複代碼,讓代碼看起來整齊好看
二、減小重複開發,讓開發速度變快
3...
這裏不列舉了,說白了向面試官吹牛也能夠算是意義吧...面試

 

封裝的步驟

一、找到須要封裝的代碼(封裝永遠不是空想出來的)
多是你項目自己須要封裝,又或是你看別人工具想要封裝...json

二、列出封裝的目標
一開始我建議仍是列出來靠譜,由於這樣不會讓你忘記最終的目標是什麼。設計模式

三、封裝
而後就開始作吧!markdown

四、測試
寫出你認爲全部的在實際中的測試用例單元測試來測試你的工具框架

五、優化
對不合理的地方進行優化,對用的不爽的地方進行優化工具

六、打包
打包發佈,到實際的生產中去使用吧post

 

以OkHttp爲例進行封裝

---若是你不知道okhttp那麼你能夠去了解一下再往下看。

在實際的項目中若是要發送http請求,那麼我喜歡使用okhttp工具來完成這個事情,而實際使用的時候,咱們每次請求都須要構建整個請求,顯得很是麻煩,每次都須要對請求的參數和返回的參數都進行構建,也很麻煩,因此我以爲有必要封裝一下

目標

我只是封裝三種類型的請求:
一、get請求
二、post請求 json格式
三、post請求 form格式
請求返回格式都是爲json格式

要求:
調用請求方法,輸入url地址、請求對象,輸出請求返回的對象

封裝 + 測試 + 優化

(第一步最關鍵:先上網找找有沒有合適的,別人已經封裝過的信息,一方面是看看是否適合本身使用,另外一方面,即便不能符合本身,那也能夠看看是否能從中找到一些能夠值得借鑑的地方)
整個過程我描述一下:
一、先把全部的代碼寫在了一個類裏面
二、而後分離出須要的工具接口
三、而後分離內部須要的方法
四、抽離重複的部分
五、針對傳入對象進行泛型優化
六、編寫單元測試進行測試
七、編寫註釋和使用markdown

所有代碼:https://github.com/LinkinStars/http-helper

 

總結

一、這裏封裝是很個性化的一種封裝,這樣的封裝多數是一種定製化的工具,你本身用會以爲很方便。
二、封裝會用到不少技術:泛型、反射...
三、封裝須要考慮的點不少:由於做爲一個工具,你須要考慮到不少人的使用狀況,不少測試都是須要作的。
四、封裝的優化不少時候會考慮使用設計模式讓總體更加優雅。
五、一開始是封裝一些別人寫的工具,後面是封裝一些本身寫的代碼,在後面是封裝一些框架。
六、越原始的封裝,封裝到最後依賴的越少,封裝最後的包越小,使用起來愈來愈方便。

這裏是對封裝的一個舉例,封裝的工具自己不必定對你適合,你須要封裝屬於你本身的工具,若是你有好的建議,趕忙砸過來吧。

相關文章
相關標籤/搜索