我们先从大的角度切入,对Okhttp主要需要了解以下几个方面的知识:
一、 整体框架是什么?
二、 优点是什么,如何实现这些优点?
一、整体框架是什么?
我们先看一张Okhttp的架构图
从这张图可以看出,整个Okhttp可以大致拆为:
- Okhttp的构建,Builder,运用了Builder模式。
- 请求的创建,Request。
- 请求的分发,Dispatcher。
- 拦截器的实现,Intercepter,运用了责任链模式。
- 网络请求的回调,Response。
整个框架的核心,在于拦截器的实现。其中,对请求的重定向处理、Request封装处理、缓存处理、连接处理,网络请求处理等,都通过拦截器的方式,实现层层包装,层层拦截,最终将一个复杂的网络请求,分割成多个彼此独立,又互相关联的拦截器。(其中,自定义拦截器是最先调用的)
二、优点是什么?
- 通过Builder模式来构建Okhttp对象,使得配置Okhttp的请求变得更加简便,且易扩展。
- 通过责任链模式,处理网络请求。将一个复杂的网络请求过程,分割成多个逻辑彼此独立,又互相关联的拦截器。使得逻辑更加简单清晰,功能之间的耦合度低,易扩展,易维护,易调试。
- 连接池复用。通过连接池的复用,来减少频繁建立http连接所导致的开销。既可以提高网络请求的速度,又可以减少资源的开销。