MVP主要框架

--------------------------------------------------------HttpUtils------------------------------------------------------
public class HttpUtils {
private static HttpUtils httpUtils;
private final OkHttpClient okHttpClient;

public HttpUtils(){
    okHttpClient = new OkHttpClient().newBuilder().addInterceptor(new longinterceptor()).build();//new拦截器
}

//自定义拦截器
class longinterceptor implements Interceptor{
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        Request.Builder builder = chain.request().newBuilder().addHeader("source", "android");
        Log.d("xxxxxx", "request:" + request);
        Response proceed = chain.proceed(request);
        return proceed;
    }
}


public static HttpUtils getHttpUtils() {
    if(httpUtils==null){
        synchronized (HttpUtils.class){
            if(httpUtils==null){
                httpUtils = new HttpUtils();
            }
        }
    }
    return httpUtils;
}
public void getdata(String path, Callback callback){
    Request request = new Request.Builder().url(path).build();
    Call call = okHttpClient.newCall(request);
    call.enqueue(callback);
}

}

--------------------------------------------------------Icontract------------------------------------------------------
public interface Icontract {
interface iview{
void data(String s);
}
interface ipresenter{
void attchview(iview iview);
void datachview(iview iview);
void requestinfo();
}
interface imoudle{
interface callisten{
void requestmsg(String s);
}
void requestdata(callisten callisten);
}
}

--------------------------------------------------------Moudleimp------------------------------------------------------
package com.example.dell.ykmn.di;

import com.example.dell.ykmn.utils.HttpUtils;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class Moudleimp implements Icontract.imoudle{
private String path=“https://www.zhaoapi.cn/product/getCarts?uid=71”;

@Override
public void requestdata(final callisten callisten) {
    HttpUtils.getHttpUtils().getdata(path, new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String s = response.body().string();
            callisten.requestmsg(s);
        }
    });
}

}

--------------------------------------------------------Presenterimp------------------------------------------------------
package com.example.dell.ykmn.di;

import java.lang.ref.WeakReference;

扫描二维码关注公众号,回复: 3398766 查看本文章

public class Presenterimp implements Icontract.ipresenter<Icontract.iview>{
private Icontract.iview iview;
private Moudleimp moudleimp;
private WeakReference<Icontract.iview> iviewWeakReference;
private WeakReference<Icontract.imoudle> imoudleWeakReference;

@Override
public void attchview(Icontract.iview iview) {
    this.iview = iview;
    moudleimp = new Moudleimp();
    iviewWeakReference = new WeakReference<>(iview);
    imoudleWeakReference = new WeakReference<Icontract.imoudle>(moudleimp);
}

@Override
public void datachview(Icontract.iview iview) {
    iviewWeakReference.clear();
    imoudleWeakReference.clear();
}

@Override
        public void requestinfo() {
            moudleimp.requestdata(new Icontract.imoudle.callisten() {
                @Override
        public void requestmsg(String s) {
            iview.data(s);
        }
    });
}

}

猜你喜欢

转载自blog.csdn.net/qq_42859231/article/details/82829677
今日推荐