欢迎来到天天文库
浏览记录
ID:37894941
大小:76.00 KB
页数:18页
时间:2019-06-02
《Retrofit基本用法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、透过Retrofit使用看其源码设计模式Retrofit基本用法我以用户登录作为示例:声明接口首先我们先定义一个登录服务接口LoginService,如下:publicinterfaceLoginService{@FormUrlEncoded@POST("login")Calllogin(@Field("username")Stringname,@Field("password")Stringpassword);}创建Retrofit对象Retrofitretrofit=newRetrofit.Builder().baseUrl("
2、http://ittiger.cn").addConverterFactory(GsonConverterFactory.create()).build();发起请求LoginServiceservice=retrofit.create(LoginService.class);Callcall=service.login("user","pwd");call.execute()或call.enqueue()Retrofit关键类在讲Retrofit实现原理之前,我先说下Retrofit里面涉及到几个关键类都是干什么用的Retorift:
3、负责配置请求过程中的基本参数,如:请求地址,结果转换器,自定义OKHttpClient等,同时还会生成请求接口对象Call:网络请求执行者(Retrofit.Call),比如:上面示例中最后调用login方法得到的Call对象就是此接口的实例OkHttpCall:此类是Retrofit.Call接口的实现,示例中最后调用login方法得到的Call对象就是此类的实例。但是其底层网络请求执行都是通过OkHttp.Call接口间接执行的,也就是说OkHttpCall是对OkHttp.Call网络请求功能的封装。Converter&Converter.F
4、actory:分别负责网络请求结果转换以及生成Converter转换器CallAdapter&CallAdapter.Factory:分别负责对Retrofit.Call实例(OkHttpCall)进行适配及生成CallAdapter适配器Platform:确定Retrofit当前运行平台,以及确定当前平台默认的的CallAdapter.Factory和ExecutorExecutorCallAdapterFactory:Android平台下的默认CallAdapter.Factory实现ServiceMethod:解析接口服务所有注解、生成请求对
5、象Request、解析请求结果ResponseParameterHandler:服务接口方法(login())参数解析处理器,配合ServiceMethod进行服务接口参数注解解析RequestBuilder:根据参数和URL构造请求需要的OkHttp.Request对象以上就是Retrofit源码实现中比较关键的10个类及其相关作用使用流程>>实现>>设计模式Builder模式创建RetrofitRetrofit场景Retrofitretrofit=newRetrofit.Builder().baseUrl("http://ittiger.cn"
6、).addConverterFactory(GsonConverterFactory.create()).build();上面代码的对象创建方式看着是不是似曾相识,看着很眼熟,没错,Android里面的Dialog的创建就是使用的这种方式:Builder模式Builder模式定义将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示Builder模式使用场景相同的方法不同的执行顺序产生不同的结果多个部件都可以装配到一个对象中,但是产生的结果不同Builder模式类图这里写图片描述Retrofit中的Builder模式Retrofit中
7、的Builder模式是简化版的Builder模式,省略了抽象建造者和指挥者不同的配置会对Retrofit产生不同的影响,如果通过addCallAdapterFactory()配置CallAdapterFactory和不配置CallAdapterFactory会对Retrofit产生完全不同的影响。如果Retrofit中使用构造方法的方式创建对象,则需要实现多个不同参数的构造方法,而使用构造方法创建对象时如果参数太多,很多时候参数代表的意思是不太理解的,总归来说就是创建过程不直观。Builder模式优缺点优点:不需要知道产品内部的组成细节,产品与创建
8、过程解耦分步组装产品,使得产品的创建过程更精细更清晰容易扩展,新产品只需要新建一个建造者即可缺点:Builder模式创建的
此文档下载收益归作者所有