Retrofit架構解析

Retrofit架構解析

Okhttp的缺陷

  • 問題一:用戶網絡請求接口配置繁瑣,尤爲是須要配置複雜的請求Body、請求頭、參數的時候。
  • 問題二:數據解析過程須要用戶手動拿到responsbody進行解析,不能複用。
  • 問題三:沒法適配自動進行線程切換。
  • 問題四:一旦存在嵌套網絡請求,就會陷入「回調陷阱」。

Retrofit是什麼?

準確來講,Retrofit是一個RESTful的HTTP網絡請求框架的封裝。設計模式

**緣由:**網絡請求的工做本質仍是由OKHTTP完成,而Retrofit只是負責網絡請求接口的封裝。markdown

Retrofit設計的任務

tempimg-1302248544.cos.ap-chengdu.myqcloud.com/Img/PingMu/…網絡

請求前:架構

  1. 統一的配置網絡請求頭:使用建造者模式、門面模式來對一些參數進行統一的配置,而且將其保存。框架

  2. 一致適配請求request:create()方法裏面使用了動態代理模式,這樣子就能夠代理全部類對象。oop

請求後:ui

  1. 線程切換:spa

  2. 數據適配:線程

Retrofit封裝的點

  1. Build 模式建立網絡請求的基本配置。(解決了問題一)
  2. 用註解來排列組合合成網絡請求,以不變應萬變。(解決了問題一)
  3. 統一提供Gson解析,提供可複用,易拓展的數據解析方案。(解決了問題二)
  4. 自定義Executor(Handler)完成線程的切換。(解決了問題三)

Retrofit這個類就是保存一系列的參數給後面使用,使用的是Build模式設計

Retrofit設計模式

在構建Retrofit時,採用的是建造者模式、外觀模式

在適配一致請求request時:Create()方法裏面使用了動態代理模式

建造者模式:

外觀模式:

靜態代理模式:

  • 代理類和委託類有一樣的接口。
  • 代理類主要負責爲委託類預處理消息、過濾消息、把消息轉發給委託類,以及過後的消息處理等。
  • 一個代理類的對象與一個委託類的對象關聯,代理類的對象自己並不真正的實現服務,而是經過調用委託類的對象的相關方法,來提供服務。

動態代理模式:

Create()方法會生成一個類的對象,即傳進來的類的對象。

每次調用create方法時,將class傳遞進來,retrofit就會採用動態代理的方式,返回該類的對象。

Retrofit註解解析

Retrofit註解分類

相關文章
相關標籤/搜索