仅供个人参考
IModdel 不做操作 public interface IPressent<V extends IView> { void attach(V v); void detach(); } public interface IView<V extends IView> { public void onSuccess(V v); public void onErrer(); } ******cou总和层
public interface MainContract { interface MainView extends IView { void showList(String result); } interface MainModel extends IModdel { interface NetCallback { void onSuccess(String result); void onError(String meg); } void loadData(String url, NetCallback callback); } interface MainPresenter extends IPressent<MainView> { void loadData(String url); } } mode层中OKhttp
public class OKhttpUtils { public interface NetCallback { void success(String result); void error(String errorMsg); } private Handler mHandler; private OkHttpClient mOkHttpClient; { /* 日志拦截器 */ HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); /* OKHttpClient */ mOkHttpClient = new OkHttpClient .Builder() .addInterceptor(interceptor) .build(); mHandler = new Handler(Looper.getMainLooper()); } private static final OKhttpUtils ourInstance = new OKhttpUtils(); public static OKhttpUtils getInstance() { return ourInstance; } private OKhttpUtils() { } public void get(String url, final NetCallback netCallback) { Request request = new Request .Builder() .url(url) .build(); mOkHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { mHandler.post(new Runnable() { @Override public void run() { if (netCallback != null) { netCallback.error(e.getMessage()); } } }); } @Override public void onResponse(Call call, final Response response) throws IOException { mHandler.post(new Runnable() { @Override public void run() { if (netCallback != null) { try { netCallback.success(response.body().string()); } catch (IOException e) { e.printStackTrace(); } } } }); } }); } public void post() { } } Main层
public class MainModel implements MainContract.MainModel { private OKhttpUtils oKhttpUtils; public MainModel(){ oKhttpUtils=OKhttpUtils.getInstance(); } @Override public void loadData(String url, final NetCallback callback) { oKhttpUtils.get(url, new OKhttpUtils.NetCallback() { @Override public void success(String result) { callback.onError(result); } @Override public void error(String errorMsg) { callback.onError(errorMsg); } }); } } p层 public class MainPresent implements MainContract.MainPresenter { private WeakReference<MainContract.MainView> viewWeakReference; private WeakReference<MainModel> modelWeakReference; @Override public void loadData(String url) { modelWeakReference.get().loadData(url, new MainContract.MainModel.NetCallback() { @Override public void onSuccess(String result) { viewWeakReference.get().showList(result); } @Override public void onError(String meg) { } }); } @Override public void attach(MainContract.MainView mainView) { viewWeakReference=new WeakReference(mainView); modelWeakReference=new WeakReference(new MainPresent()); } @Override public void detach() { if (viewWeakReference != null) { viewWeakReference.clear(); viewWeakReference = null; modelWeakReference.clear(); modelWeakReference = null; } } } 之后 主界面 这样引用:public class MainActivity extends AppCompatActivity implements MainContract.MainView {}