Kotlin 类委托(by) 解构HttpUtil

在android 开发中,我们都会用到Http请求框架有很多,偶尔会更新框架,如从volley替换成okhttp,如果没有做好封装,替换的时候需要修改很多地方。

下面提供一个封装的思路,做一个httpUtil,当需要替换请求框架,我们只需要重写RequestImpl,而不需要修改很多地方。

1.准备一个接口类

public interface IRequest {
    <T> void excute(Request request, Class<T> cls,IRequestCallback<T> callback);
    void cancelTarget(String cls);
}

2.实现IRequest接口

class RequestImpl : IRequest {

    override fun <T> excute(request: Request, cls:Class<T>,callback: IRequestCallback<T>)             {
    }
    override fun cancelTarget(cls:String){
    }
}

3.将HttpUtil中所有的实现都委托给RequestImpl对象,这个类本身就不需要去实现IRequest接口中的方法

class HttpUtil private constructor() :IRequest by RequestImpl() {

    companion object {
        @JvmStatic
        val instance:HttpUtil by lazy { HttpUtil() }
    }
}

4.使用非常简单

 Request mRequest=new Request();
        mRequest.setMUrl(SELECT_ADVERT_URL);
        mRequest.setMTarget(HttpActivity.class.getName());
        mRequest.setMParams(map);
         HttpUtil.getInstance().excute(mRequest, String.class,new IRequestCallback<String>() {
            @Override
            public void onSuccess(String response) {

            }

            @Override
            public void onFailed(String msg) {
            }

            @Override
            public void onNotNetwork() {

            }
        });
发布了19 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ange_li/article/details/104207592