Retrofit2.0本身就是基于OKHttp封装的网络请求框架,使用起来也很方便,但是只有自己动手进一步封装好这个框架,使用起来才能够更加的得心应手,本人也是参考大佬(某网,傅大佬)的资料学习,最后才能对Retrofit2.0做一个简单的封装,仅此记录,方便日后复用,不足之处望大佬们多多指点!
步骤一:定义Retrofit具体请求方法
先创建一个Retrofit请求的基本接口,里面主要定义了请求的一些基本方法,如下所示:
步骤二:使用静态内部类创建单例模式,获取第一步创建的RestService实例
关于静态内部类创建单例可参考此文章:java单例模式比较与优化
前两步相对简单,就是同过一个api接口定义基本的请求方法,其次获取service实例,这也是Retrofit2.0基本用法的前两步
步骤三:利用建造者模式创建RestClientBuilder,方便我们在业务代码中链式调用网络请求
Android 原生AlertDialog 就是建造者模式
建造者模式请参考:Android建造者模式
代码较多,仅贴出一部分,写法类似
步骤四:创建RestClient类,用来构建(bulider)RestClientBuilder对象,同时进行具体的网络操作
这个类就涉及到网络请求的核心业务逻辑了
首先通过builder方法创建RestClientBuilder实例,RestClientBuilder进行一系列链式调用完毕后,在调用build方法创建RestClient
实例,通过构造方法将链式调用的参数传递给RestClient,然后在RestClient里面进行具体的网络操作请求
step_1:构造方法,接收RestClientBuilder的bulid方法传递过来的参数
step_2:bulider方法,用来构建 RestClientBuilder对象
step_3:request方法,通过RestCreator获取RestService对象(参考第二步),再调用RestService里面的具体的请求方法
步骤五:关于步骤四最后的getRequestCallBack()做简要说明
service调用具体的网络操作之后,会返回一个call对象,(Call#execute 方法同步; Call#enqueue 方法异步)
然后调用call.enqueue (Callback callback);至此,Retrofit一次完整的网络请求流程才算结束;而这个callback
就是网络请求的回调(成功或者失败),最后一步就是关于这个回调的封装,具体看代码:
步骤六:使用我们封装好的网络请求框架来请求数据
直接上代码了:
行云流水一条线有木有,哈哈,本次封装只测试了get方法,后续其他方法都会加上,访问的是百度的链接,
还有很多不足指之处,望大佬们多多指点!
代码已上传gitHub:Retrofit2.0二次封装
网友评论