Mvp ( 契约的 )

建一个大接口

//V层
public interface LView{
    //刷新数据
    //同时有两个板块要请求数据的话 写两个
    public void showData(GridBean gridBean);
    public void showData(RecyBean recyBean);

}

//P层
public interface LPresent<LView>{
    //绑定
    public void attachView(LConstract.LView lView);

    //解绑
    public void dattach(LConstract.LView lView);

    //请求数据
    public void requestData(String GRIDURL, String RECYURL);

}

//M层
public interface LModel{
    public void reponseData(CallBack callBack);
    public interface CallBack{
      //同时有两个板块要请求数据的话 写两个
        public void oncallback(GridBean gridBean);
        public void oncallback(RecyBean recyBean);
    }
}

继承V层

implements LConstract.LView 实现方法

    //p层对象
    present = new LPresentlmpl();
    present.attachView(this);
    present.requestData(Contant.GRIDURL,Contant.RECYURL);

继承P层

implements LConstract.LPresent 实现方法

attachView里
this.lView=lView;
//软引用包裹
reference = new SoftReference<>(lView);
//m层对象
model = new Lmodellmpl();

@Override
public void dattach(LConstract.LView lView) {
    reference.clear();
}

@Override
public void requestData(String gridurl, String GRIDURL) {
   model.reponseData(new LConstract.LModel.CallBack() {
       @Override
       public void oncallback(GridBean gridBean) {
           lView.showData(gridBean);
       }

       @Override
       public void oncallback(RecyBean recyBean) {
            lView.showData(recyBean);
       }
   });
}

继承M层

implements LConstract.LModel 实现方法

@Override
public void reponseData(final CallBack callBack) {

    OkGo.<String>get(Contant.GRIDURL).execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> response) {
            String s = response.body().toString();
			//解析
            Gson gson=new Gson();
            GridBean gridBean = gson.fromJson(s, GridBean.class);
            //回
            callBack.oncallback(gridBean);
        }
    });

猜你喜欢

转载自blog.csdn.net/weixin_43805224/article/details/85556462
MVP