美文网首页
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