Retrofit架构解析

Retrofit架构解析

Okhttp的缺陷

  • 问题一:用户网络请求接口配置繁琐,尤为是须要配置复杂的请求Body、请求头、参数的时候。
  • 问题二:数据解析过程须要用户手动拿到responsbody进行解析,不能复用。
  • 问题三:没法适配自动进行线程切换。
  • 问题四:一旦存在嵌套网络请求,就会陷入“回调陷阱”。

Retrofit是什么?

准确来讲,Retrofit是一个RESTful的HTTP网络请求框架的封装。设计模式

**缘由:**网络请求的工做本质仍是由OKHTTP完成,而Retrofit只是负责网络请求接口的封装。markdown

Retrofit设计的任务

tempimg-1302248544.cos.ap-chengdu.myqcloud.com/Img/PingMu/…网络

请求前:架构

  1. 统一的配置网络请求头:使用建造者模式、门面模式来对一些参数进行统一的配置,而且将其保存。框架

  2. 一致适配请求request:create()方法里面使用了动态代理模式,这样子就能够代理全部类对象。oop

请求后:ui

  1. 线程切换:spa

  2. 数据适配:线程

Retrofit封装的点

  1. Build 模式建立网络请求的基本配置。(解决了问题一)
  2. 用注解来排列组合合成网络请求,以不变应万变。(解决了问题一)
  3. 统一提供Gson解析,提供可复用,易拓展的数据解析方案。(解决了问题二)
  4. 自定义Executor(Handler)完成线程的切换。(解决了问题三)

Retrofit这个类就是保存一系列的参数给后面使用,使用的是Build模式设计

Retrofit设计模式

在构建Retrofit时,采用的是建造者模式、外观模式

在适配一致请求request时:Create()方法里面使用了动态代理模式

建造者模式:

外观模式:

静态代理模式:

  • 代理类和委托类有一样的接口。
  • 代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及过后的消息处理等。
  • 一个代理类的对象与一个委托类的对象关联,代理类的对象自己并不真正的实现服务,而是经过调用委托类的对象的相关方法,来提供服务。

动态代理模式:

Create()方法会生成一个类的对象,即传进来的类的对象。

每次调用create方法时,将class传递进来,retrofit就会采用动态代理的方式,返回该类的对象。

Retrofit注解解析

Retrofit注解分类

相关文章
相关标签/搜索