- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Retrofit基本用法
透过Retrofit使用看其源码设计模式
Retrofit基本用法
我以用户登录作为示例:
声明接口
首先我们先定义一个登录服务接口LoginService,如下:
public interface LoginService {
@FormUrlEncoded
@POST(login)
CallString login(@Field(username) String name, @Field(password) String password);
}
创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl()
.addConverterFactory(GsonConverterFactory.create())
.build();
发起请求
LoginService service = retrofit.create(LoginService.class);
CallUser call = service.login(user, pwd);
call.execute()或call.enqueue()
Retrofit关键类
在讲Retrofit实现原理之前,我先说下Retrofit里面涉及到几个关键类都是干什么用的
Retorift: 负责配置请求过程中的基本参数,如:请求地址,结果转换器,自定义OKHttpClient等,同时还会生成请求接口对象
Call: 网络请求执行者(Retrofit.Call),比如:上面示例中最后调用login方法得到的Call对象就是此接口的实例
OkHttpCall: 此类是Retrofit.Call接口的实现,示例中最后调用login方法得到的Call对象就是此类的实例。但是其底层网络请求执行都是通过OkHttp.Call接口间接执行的,也就是说OkHttpCall是对OkHttp.Call网络请求功能的封装。
Converter Converter.Factory: 分别负责网络请求结果转换以及生成Converter转换器
CallAdapter CallAdapter.Factory: 分别负责对Retrofit.Call实例(OkHttpCall)进行适配及生成CallAdapter适配器
Platform: 确定Retrofit当前运行平台,以及确定当前平台默认的的CallAdapter.Factory和Executor
ExecutorCallAdapterFactory: Android平台下的默认CallAdapter.Factory实现
ServiceMethod: 解析接口服务所有注解、生成请求对象Request、解析请求结果Response
ParameterHandler: 服务接口方法(login())参数解析处理器,配合ServiceMethod进行服务接口参数注解解析
RequestBuilder: 根据参数和URL构造请求需要的OkHttp.Request对象
以上就是Retrofit源码实现中比较关键的10个类及其相关作用
使用流程 实现 设计模式
Builder模式创建Retrofit
Retrofit场景
Retrofit retrofit = new Retrofit.Builder()
.baseUrl()
.addConverterFactory(GsonConverterFactory.create())
.build();
上面代码的对象创建方式看着是不是似曾相识,看着很眼熟,没错,Android里面的Dialog的创建就是使用的这种方式:Builder模式
Builder模式定义
将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示
Builder模式使用场景
相同的方法不同的执行顺序产生不同的结果
多个部件都可以装配到一个对象中,但是产生的结果不同
Builder模式类图
这里写图片描述
Retrofit中的Builder模式
Retrofit中的Builder模式是简化版的Builder模式,省略了抽象建造者和指挥者
不同的配置会对Retrofit产生不同的影响,如果通过addCallAdapterFactory()配置CallAdapterFactory和不配置CallAdapterFactory会对Retrofit产生完全不同的影响。
如果Retrofit中使用构造方法的方式创建对象,则需要实现多个不同参数的构造方法,而使用构造方法创建对象时如果参数太多,很多时候参数代表的意思是不太理解的,总归来说就是创建过程不直观。
Builder模式优缺点
优点:
不需要知道产品
您可能关注的文档
最近下载
- 公共危机管理概论(第二版)王宏伟-第九章.pptx VIP
- 人音版初中音乐八年级上册第五单元国乐飘香春江花月夜课件.pdf VIP
- 工程结算单模板.pdf VIP
- CYX-QEHP-31纠正与预防措施控制程序D0.doc VIP
- 小学语文教案《复习字词》教案模板.pdf VIP
- Q GCH001-2016-2016_足银饰品 企业标准.pdf VIP
- 公共危机管理概论(第二版)王宏伟-第八章.pptx VIP
- 探索初中体育课程与其他学科的跨学科融合.pptx VIP
- 公共危机管理概论(第二版)王宏伟-第七章.pptx VIP
- 河南省洛阳市涧西区2023-2024学年八年级上学期期中考试道德与法治试卷.docx VIP
文档评论(0)