MVP框架两种实现方式

第一种MVP:


MVP框架:
     View层:BaseActivity

/**
 *让子类去实例化Presenter层
 */
public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements View.OnClickListener {
   

    public P mPresenter;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(getContentViewID());//设置布局

        initView();
        initData();
        initListener();

        mPresenter = getmPresenterInstance();
        mPresenter.bindView(this);//让Presenter绑定View
    }

    public abstract void initView();//初始化View

    public abstract int getContentViewID();//获取布局

    public abstract void initData();//初始化数据

    public abstract void initListener();//初始化监听

    public abstract P getmPresenterInstance();//让子类去绑定P层

    //处理 响应错误信息
    public abstract <ERROR extends Object> void responseError(Error error,Throwable throwable);

    @Override
    protected void onDestroy() {
   
        super.onDestroy();
        destroy();
    }

    public abstract void destroy();
}

     Model层:BaseModel

/**
 *通过构造方法绑定Presenter
 */
public class BaseModel<P extends BasePresenter> {
   

    public P mPresenter;

    public BaseModel(P mPresenter){
   
        this.mPresenter = mPresenter;
    }
}

     Presenter层:BasePresenter

**
 *Presenter层需要绑定View层和Model层
 * 绑定View:调用BindView()方法     即通过调用方法来绑定View
 * 绑定Model:构造方法中调用getModelInstance(),getModelInstance()由子类去实现  即让子类去实例化并绑定Model
 */
public abstract class BasePresenter<V extends BaseActivity,M extends BaseModel>{
   

    public V mView ;//View层实例

    public M mModel;//Model层实例

    public BasePresenter(){
   
        this.mModel = getModelInstance();
    }

    public void bindView(V mView){
   //绑定View层
        this.mView = mView;
    }

    public void unBindView(){
   //解绑View
        this.mView = null;
    }

    public abstract M getModelInstance();//让子类去实例化并绑定Model
}

     契约接口:ILoginContract:模拟登陆操作

public interface ILoginContract {
   

    //Model层:请求业务逻辑,Model层不需要回调函数,只需要请求服务器的函数
    public interface M{
   

        void requestLogin(String name,String pwd) throws Exception;

    }
    //View和Presenter层写在了一起,因为View和Presenter的方法一模一样,他们既需要请求验证的函数,又需要回调函数
    public interface VP{
   

        void requestLogin(String name,String pwd) throws Exception;

        //回调函数
        void responseLoginResult
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值