美文网首页
Retrofit分析

Retrofit分析

作者: 牛晓伟 | 来源:发表于2019-04-09 13:26 被阅读0次

    retrofit诞生背景

    在Android上面,进行网络请求的库HttpClient、HttpURLConnection、OKHttp和Volley有这些,不管使用哪个库来进行网络请求,都需要一些重复,繁琐的步骤:
    1.组装各种请求参数,请求url等信息
    2.使用网络库把请求发送至服务器,接收服务器的返回数据
    3.对服务器返回的数据进行解析(不管是使用Gson还是其他的第三方解析库)
    retrofit主要就是解决1,3步骤的

    retrofit使用到知识点

    运行时注解(注解分为编译时和运行时两种)
    动态代理(那自然有静态代理,自己手动写代码来实现)

    Builder(构建模式)
    Facade(门面模式)
    装饰模式
    组合优于继承
    面向接口编程

    类结构

    未命名文件.jpg
    1. Retrofit 是很关键的类,该类使用了facade,builder模式,开发者使用它来使用retrofit的功能,create(class)方法用来生成一个service的实例,里面用到了动态代理

    2. ServiceMethod,收集方法,方法参数的注解信息,返回返回类型信息等信息。把参数值与注解信息最终融合在Request中

    3. Call ,接口封装了从发送网络请求到返回数据的整个过程

    4. OkHttpCall,实现了Call接口,该类主要把构造Request请求的过程通过ServiceMethod实现,在把Request通过OkHttpClient发送出去,通过Converter把返回数据转换为对应的类型,并且在各个环节增加了是否用户取消了网络请求处理

    5. Converter,接口主要定义转换数据接口

    6. CallAdapter,主要作用对返回的数据进行处理时,可以进行扩展,比如返回数据的回调在ui线程中执行

    7. ExecutorCallAdapterFactory,实现了CallAdapter.Factory,实现了回调在ui线程中执行,当然开发者可以进行扩展

    注解类
    retrofit中注解类是很关键的比如Get,Post等

    从中学到

    1. 简易性,别暴漏过多细节:自己在开发模块或者lib时,要让使用者使用起来能多傻瓜式那就多傻瓜式,尽量不要让使用者知道lib中过多的细节(类)的存在,retrofit中用户不需要关心的类都采用了缺省权限。
    2. 扩展性:使用者可以对lib或模块很容易的扩展功能(使用组合优于继承,面向接口编程)

    相关文章

      网友评论

          本文标题:Retrofit分析

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