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() {

            }
        });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章