网络框架替换?一行代码搞定

网络框架替换?一行代码搞定

在App版本迭代中,有可能会跟换框架,比如我们之前的网络框架是volley,后来替换为okhttp或者retrofit,或者图片加载框架从ImageLoader替换为Glide,那在我们如何在项目中使用一行代码来完成框架的替换?既节省了代码熟悉的时间,又能脱离业务直接开发,大大提高开发效率和降低代码之间的耦合度

思路:添加一个隔离层,App可以选择需要的框架,并提供相应的接口。App使用隔离层提供的接口即可。
在这里插入图片描述
具体实现就是通过:动态代理
首先,我们可以把网络请求分工一下,app就是负责发起请求需求的,OKhttp负责真正的请求,以前我们都是直接将两者耦合到一起,现在不妨在两者之间加入一个隔离层,这样设想一下:我们把app当层客户,这个客户想买房,而okhttp是卖房的人。按照现有思想,我们可以在其中间添加一个房屋中介公司(链家)和一个销售(链家业务员)。(客户想买房,并不会直接找业主买房,而是通过房产公司。房产公司会有一些业务员,业务员会查看公司登记了哪些在卖的房子。而这些在卖的房子真正是属于这些业主的。房产公司具备卖房的能力,而真正进行卖房动作的是业务员,业务员会持有业主的一个引用,卖房的过程由业务员和业主进行交互。)
这样的话:App可以理解为客户;房产公司和业务员可以理解为隔离层;volley、okhttp、retrofit等框架可以理解为业主。

动态代理类图如下所示:
在这里插入图片描述
下面开始动手code
(1)创建一个demo,并添加依赖
在这里插入图片描述
(2)新建IHttpProcessor接口,相当于房产公司,里面可以定义各种网络操作的方法,如post、get等。 如下图:
在这里插入图片描述
其中ICallBack为回调接口,里面包含两个方法:成功、失败
在这里插入图片描述
ICallback中的onSuccess返回的是String类型,如果想直接返回一个json转换后的对象,我可以定义一个HttpCallback实现ICallback接口,然后将json字符串转换为我们需要的对象。 如图:
在这里插入图片描述
(3)添加代理类(业务员),因为客户要买房去房产公司,一般都有业务员接待,所以按照现实社会逻辑,我们添加一个业务员类,使其与客户和业主关联起来
在这里插入图片描述
(4)接下来就是重头戏了,我们的业主闪亮登场,比如OkHttp/Volley/Xutils等,由于网络请求框架大同小异,这里就只累述一个okhttp,其它逻辑大同小异,都是创建完网络请求后,在成功和失败函数里回调callback的对应函数即可
在这里插入图片描述
(5)然后就是让app(客户)发起网络请求的需求,并且在application初始化对应的网络框架
在这里插入图片描述
在这里插入图片描述
当我们想切换网络请求框架的时候直接在application切换即可,极大的提高了开发效率

(思考Tips:虽然这样会提高开发效率,但也暴露出一些问题,比如对象的生命周期不好管理,和在application初始化对启动速度的影响也需要考虑,那么有没有更好的办法来解决这些问题,敬请期待续集…)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值