实现无侵入切换网络请求框架

一、项目开发中,往往会随着需求的改变或者项目的升级重构等而切换到其它网络加载框架上去。如果最初代码设计的耦合度太高,那么恭喜你,成功入坑了。至今无法忘却整个项目一行行去复制粘贴被支配的恐惧。

那我们如何去搭建这样一个框架去在这个变化中最大程度的实现代码的可扩展性和变通性?

先说一下我们的设计思路或者说是设计原则:本着解耦和调用方便的原则 我们采用策略模式、单例模式和静态代理模式等来设计这个小巧精简易用的框架。

二、代码:

框架代码不多,

1、首先我们需要一个策略接口类,当然这里可以拓展你的其他方法,用于不同的网络请求策略去实现它执行自己的网络加载方法

2、我们需要一个RequestOptions, 不跟任何网络框架有关,但又适用于所有的网络框架,负责传递网络请求的一些配置信息,如需别的方法自行添加即可

public interface RequestBack<T> {
    void onFail(Object obj);
    void onSuccess(T obj);
}复制代码

3、最重要的最后一步就是网络请求的管理调用,策略或者静态代理模式,开发者只需要关心RequestManager + RequestOptions

代码如下:


复制代码

public class RequestManager {
private static IRequestStrategy sRequest;
private static volatile RequestManager sInstance;

private RequestManager() {
}

//单例模式
public static RequestManager getInstance() {
if (sInstance == null) {
synchronized (RequestManager.class) {
if (sInstance == null) {
//若切换其它加载框架,可以实现一键替换
sInstance = new RequestManager();
}
}
}
return sInstance;
}

//提供实时替换网络加载框架的接口
public void setRequestLoader(IRequestStrategy loader) {
if (loader != null) {
sRequest = loader;
}
}

public RequestOptions url(String path) {
return new RequestOptions(path);
}

public void loadOptions(Context context,RequestOptions options,
RequestBack back) {
sRequest.loadData(context,options,back);
}

}

复制代码

怎么样 是不是很简单,那我们看一下怎么使用吧

三、使用

写一个当前使用的网络请求框架的请求策略,去实现IRequestStrategy

第二个策略
/**
 * okhttp的封装
 */
public class RequestOK implements IRequestStrategy {
    @Override
    public void loadData(Context context, RequestOptions options,
                         RequestBack back) {

    }
}复制代码

如何使用呢?看下边

1、先初始化,设置要使用的网络请求策略

RequestManager.getInstance().setRequestLoader(new RequestOK());
2、调用请求
复制代码
复制代码

        如果你想切换网络请求策略调用
复制代码
RequestManager.getInstance().setRequestLoader(new RequestOK());切换即可!
不用更改任何逻辑代码!!!复制代码
总结:到这里 就结束了,怎么样?是不是很简单,同样的道理,你也可以封装下别的常用的需要
切换的框架,实现无侵入切换,动动手指开始写起来吧!有问题欢迎交流


复制代码

喜欢 就关注吧,欢迎投稿!



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值