概念
一個類型安全的、Android或者Java的客戶端,基于RESTful Api,將底層代碼都封裝起來,只是暴露除了我們業(yè)務(wù)中的數(shù)據(jù)模型和操作方法
-
大量使用設(shè)計模式
- 建造者、外觀、動態(tài)代理、適配器、策略、裝飾
-
大量使用注解
- 方法注解:@GET @POST、@PUT、@DELETE、@PATCH、@OPTIONS、@HTTP
- 標記注解:@FormUrlEncoded、@Multipart、@Streaming
- 參數(shù)注解:@Query 、@QueryMap、@Body、@Field、@FieldMap、@Part、@PartMap
- 其它注解:@Path、@Header、@Headers、@Url
-
基本用法
- 定義對象Bean,定義訪問數(shù)據(jù)接口
- 建造者模式創(chuàng)建Retrofit
- Retrofit.create(Interface.class) 返回請求代理代理對象
- enqueue:異步,execute:同步
整體架構(gòu)(可以從以下幾個每個點深入切入)
- RESTful:HTTP
- 接口:面向接口編程
- 注解:基礎(chǔ)注解、運行時期注解、編譯時期注解(擴展APT)
- 設(shè)計模式:
- 代理模式:靜態(tài)代理、動態(tài)代理(原理)、Cglib(概念)
- 策略模式:擴展性、異同點
- 流程解析:
面向接口編程(方便程序使用多態(tài) 、代碼擴展性更強、降低代碼耦合)
- Call接口:發(fā)起請求的方法,包括同步請求、異步請求、取消請求等
- CallAdapter接口:請求適配器,用于RxJava轉(zhuǎn)化成一個Retrofit中的Call<T>
- Callback接口:一個對應(yīng)成功的回調(diào)onResponse,一個對應(yīng)失敗的回調(diào)onFailure,此處回調(diào)在主線程
- Converter接口:職責(zé)主要是做返回的數(shù)據(jù)進行類型轉(zhuǎn)化,比如json的轉(zhuǎn)換
流程解析
- Retrofit總體使用的是外觀模式,Retrofit持有所有子系統(tǒng)的引用
- Retrofit創(chuàng)建(建造者模式)有兩個比較重要的兩個Factory,分別是CallAdapter、Converter
-
retrofit.create()使用動態(tài)代理,解析自定義Api的方法,每個方法對應(yīng)一個ServiceMethod(解析定義的注解,轉(zhuǎn)化成真實的請求api) - 執(zhí)行請求:定義OkHttpCall真正請求地方
- 處理響應(yīng):
parseResponse()此處Converter

整體流程

單一流程