IConter
public interface IConter { public interface IView{ void gouwushowData(String msg); } public interface IPresenter<IView>{ void attachView(IView iView); void datechView(IView iView); void gouwuRequestData(); } public interface IModel{ public interface OnCallBack{ void CallBack(String msg); } void gouwuResponseData(OnCallBack onCallBack); }
ModelImpl
public class ModelImpl implements IConter.IModel { public static final String URL = "http://www.zhaoapi.cn/product/getCarts?uid=71"; @Override public void gouwuResponseData(final OnCallBack onCallBack) { OkHttpUtils.getinstance().get(URL, new Callback() { @Override public void onFailure(Call call, IOException e) { String errorString = e.getMessage().toString(); onCallBack.CallBack(errorString); } @Override public void onResponse(Call call, Response response) throws IOException { String responseString = response.body().string(); onCallBack.CallBack(responseString); } }); } }
PresenterImpl
public class PresenterImpl implements IConter.IPresenter<IConter.IView> { IConter.IView iView; private ModelImpl model; private WeakReference<IConter.IView> iViewWeakReference; private WeakReference<ModelImpl> modelWeakReference; @Override public void attachView(IConter.IView iView) { this.iView = iView; model = new ModelImpl(); iViewWeakReference = new WeakReference<>(iView); modelWeakReference = new WeakReference<>(model); } @Override public void datechView(IConter.IView iView) { iViewWeakReference.clear(); modelWeakReference.clear(); } @Override public void gouwuRequestData() { model.gouwuResponseData(new IConter.IModel.OnCallBack() { @Override public void CallBack(String msg) { iView.gouwushowData(msg); } }); } }
OkHttpUtils
public class OkHttpUtils { public static OkHttpUtils okHttpUtils; public OkHttpClient okHttpClient; private OkHttpUtils(){ if(null == okHttpClient){ synchronized (OkHttpClient.class){ if(null == okHttpClient){ okHttpClient = new OkHttpClient.Builder().build(); } } } } public static OkHttpUtils getinstance(){ if(null == okHttpUtils){ synchronized (OkHttpUtils.class){ if(null == okHttpUtils){ okHttpUtils = new OkHttpUtils(); } } } return okHttpUtils; } public void get(String urlString, Callback callback){ Request request = new Request.Builder().url(urlString).build(); okHttpClient.newCall(request).enqueue(callback); } public void post(String urlString, FormBody formBody,Callback callback){ Request request = new Request.Builder().method("POST", formBody).url(urlString).build(); okHttpClient.newCall(request).enqueue(callback); } }