7 月份非常忙碌,想系統性的寫一篇文章,好幾次不知道如何下手,後來想想還不如順其自然,寫一點自己的學習心得體會。
這篇文章,聊聊 7月份筆者的程式設計心得 ,希望對大家有所幫助。
1 IntelliJ IDEA 社群版
工欲善其事,必先利其器。
筆者的 Mac 電腦安裝了 IntelliJ IDEA Ultimate Edition 2018 ,一次非正常關機,Ultimate Edition 再也啟動不了,不願意再用破解版了,於是下載了 IntelliJ IDEA 社群版。
體驗一番,感覺很驚喜,啟動速度非常快,介面非常簡潔。
開發過程中,基本沒有卡頓的場景,市場中免費的外掛基本可以滿足個人的需求 。
2 Hutool 初體驗
Hutool 是最近幾年非常火的 Java 工具類庫 , 筆者一直沒有使用過,這個月有機會就嘗試了一番。
這次實戰主要使用了 Hutool 的兩個功能: HTTP 客戶端 和 JSON 解析工具。
1、HTTP 客戶端
我們可以按需依賴,比如我們只需要 HTTP 客戶端工具,只需要依賴如下元件即可:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-http</artifactId>
<version>5.8.25</version>
</dependency>
下圖是執行 HTTP GET 的流程:
假如我們想換成 POST 請求,只需要簡單的修改:
筆者自己也封裝過 HTTP 工具類,大體的套路類似:
上圖,筆者定義一個 HTTP 工具類,在類中定義多個靜態公共方法供使用。這個工具類非常容易實現,但還是顯得非常粗糙。
而 Hutool HTTP 工具的使用方式是鏈式呼叫 ,所謂鏈式呼叫是透過設定方法的返回值,讓返回值變為物件自身,從而實現連續的方法呼叫。
Hutool 提供了 GenericBuilder 類,可以實現鏈式呼叫,具體實現程式碼如下:
使用鏈式呼叫提高了程式碼的可讀性和可組合性,使得程式碼更加簡潔、靈活和易於維護,這種程式設計技巧值得我們學習。
2、JSON 解析工具
筆者曾經用得比較多的 JSON 解析工具是阿里的 FastJSON , 專案中使用的是 Hutool JSON ,所以也就嘗試用了一下。
筆者對接的業務介面返回的結果如上圖的格式,定義了一個響應類:
然後直接將結果轉換成相關的資料實體:
比如當解析商品資訊時,呼叫如下方法:
從使用體驗來看,Hutool JSON 使用起來和 FastJSON 差異並不大,API 非常類似,使用起來還是很絲滑的。
3 整合電商供應鏈
某電商公司有一個自研的商城 APP ,商品來自 A 供應鏈,公司領導談了另一個供應鏈 B , 想讓技術團隊接入進來,從而豐富商城的商品多樣性。
但兩個月過去了,技術團隊進展非常緩慢,任務交給筆者後,筆者花了 1 個月時間,初步將供應鏈整合一起。
上圖是使用者下單的原有流程,當支付成功之後,支付服務會供應鏈 A 的提交訂單服務,建立供應鏈訂單,並回寫到資料庫。
假如引入了多個供應鏈,對於各個業務系統來講,與多個供應鏈系統互動就會變得複雜,因此從服務呼叫角度來講,筆者引入了一個獨立的供應鏈服務 ,下圖是供應鏈服務的設計概覽。
不同的供應鏈公司會提供不同的 API 介面 ,假如每次呼叫供應連結口使用 if else 來判斷,程式碼就會變得極其難以維護。
因此,筆者設計了一個介面卡層,類似於筆者開源的簡訊服務的介面卡層。
不過相比簡訊服務的 SPI 機制,考慮到研發成本,同時也方便其他研發同學維護,筆者將供應鏈介面卡做了非常大的簡化。
供應鏈介面卡核心介面如下圖:
呼叫供應連結口時,透過介面卡構造器建立介面卡,然後呼叫介面卡的方法即可。
經過三週左右的研發,筆者基本將供應鏈 B 整合了進來,同時將供應鏈服務化,提升了系統的可維護性。
4 寫到最後
這次整合供應鏈的任務,雖然基本完成了,但筆者內心並沒有很多成就感,一方面是因為曾經經歷了無數次大大小小的重構,感官都有點麻木了。
另一方面,很多管理者一直都認為技術很簡單,可事實是,沒有對技術的投入和重視,有些事情他們真的搞定不了。
技術一直都是:短時間被高估,長時間被低估。
Hutool 地址:https://hutool.cn/
IDEA 社群版:https://www.jetbrains.com/idea/download/