Retrofit网络请求本质是OkHttp完成的,它仅仅是对网络请求接口的封装.Retrofit最外层通过建造者模式进行封装,内部封装了网络请求适配器工厂,数据解析工厂,rxjava解析工厂,Okclient等对象.网络请求执行器OkHttpCall默认通过handler来进行线程的切换,通过handler来进行线程的切换.通过手动设置rxjava解析工厂,使用rxjava Scheduler进行现成的切换.
首先网络请求工厂生成OkCall对象,对使用平台进行确认,然后根据传入的请求路径,将String类型的URL转为适合Ok请求的HtttpUrl类型的URL.Gson转化工厂底层创建gson对象,并携带对象加入到转换工厂数组converterFactories数组,等待分配任务进行对象转换.
接口创建采用了外观模式和代理模式.首先通过外观设计模式create()方法获取封装好的请求对象,通过动态代理获取到OK的网络请求对象,通过策略模式来决定使用handler还是Rxjava进行线程切换,OkHttpCall在发送请求时会进行线程的切换,所以采用了装饰模式,请求分别为同步和异步.根据Ok提供的线程分发器和拦截器进行请求.
网友评论