美文网首页
Retrofit(完结)

Retrofit(完结)

作者: 翼墨 | 来源:发表于2022-09-16 09:55 被阅读0次

问题:

1,Retrofit具体是如何调器Okhttp进行请求的。

一,简介

Retrofit是对网络请求进行封装,他是基于OKhttp的一个网络封装框架。


image.png

1,App通过Retrofit请求网络,其实是通过Retrofit封装请求参数,之后由okHttp完成请求操作
2,在网络层返回数据后OkHttp将数据返回给Retrofit,Retrofit再根据用户的需求进行解析。

Retrofit的的优势是具有很好的扩展性,支持RxJava,GSON,OkHttp进行无缝对接。

二,Retrofit的使用

1,官网的例子

2,CGLIB代理模式:可以改字节码。

三,Retrofit源码

Retrofit的优势是通过大量的设计模式对网络请求进行了解耦。

1,网络通信八步

1.创建Retrofit实例
2.定义一个网路请求接口,并未接口中的方法添加注解。
3.通过动态代理生成网络请求对象。
4.通过网络请求适配器将网络请求对象进行平台适配。
5.通过网络请求执行器发送网络请求。
6.通过数据转换器解析数据。
7.通过回调执行器切换线程。
8.用户在主线程处理结果

2,Retrofit七个成员变量

1.private final Map<Method, ServiceMethod<?, ?>> serviceMethodCache = new ConcurrentHashMap<>();
2.final okhttp3.Call.Factory callFactory;
3.final HttpUrl baseUrl;
4.final List<Converter.Factory> converterFactories;
5.final List<CallAdapter.Factory> callAdapterFactories;
6.final @Nullable Executor callbackExecutor;
7.final boolean validateEagerly;

3,builder构建者模式&Builder内部类

private final Platform platform;
private @Nullable okhttp3.Call.Factory callFactory;
private HttpUrl baseUrl;
private final List<Converter.Factory> converterFactories = new ArrayList<>();
private final List<CallAdapter.Factory> callAdapterFactories = new ArrayList<>();
private @Nullable Executor callbackExecutor;
private boolean validateEagerly;

4,创建ConvertFactory加入到Retrofit的ConvertFactory集合中

5,创建CallAdapterFactory加入到Retrofit的CallAdapterFactory集合中

 实现CallAdapterFactory的步奏
 实现Factory--->注册CallAdapter--->Factory.get()--->adapt方法。

6,通过builder的build方法创建Retrofit对象。

7,创建网络请求接口实例。

     (1) 网络接口中的方法装换成serviceMethod对象。
     (2)获取OkHttpCall

8,同步异步请求。

同步:Okhttp.excute()


image.png

异步:Okhttp.enqueue()

四,Retrofit中用到的设计模式

1,Builder构建者模式(1,方便扩展穿入参数。2,方便把实现和表示相分离。)
2,工厂模式,静态工厂(工厂模式就是通过一个工厂类去创建某个类的对象。)
3,代理模式(不直接去调用某个类的方法,而是中间设置一个代理类,让这个代理类穿搭调用的意图)
4,外观模式(影藏内部各个子系统,对外提供统一的访问接口。)
5,策略模式(策略模式和工厂模式的区别,策略模式侧重方法具体的的实现,工厂模式侧重对象的创建。)
6,适配器模式()
7,观察者模式(一个对象和多个对象产生关联,当这个对象发生变化时其他的关联对象(观察者)也能接受到相应变化)
8,责任链的模式(拦截器采用的是责任链的模式)

image.png image.png

五,Retrofit总结

  1. 基于OkHttp的一个封装框架。最终所有的网络请求最终是走OkHttp。
  2. 可以实现网络传送内容的装换。也就是Coverter的实现。
    3.可以对返回来的数据进行本地的适配,返回一个应用层可以直接用的对象。也就是CallAdapter实现。
    4.Retrofit的最大优点是可以进行很好解耦。

相关文章

网友评论

      本文标题:Retrofit(完结)

      本文链接:https://www.haomeiwen.com/subject/yxwjmktx.html