Android mvp之P,V的封装

在MVP模式中,我们知道通常Presenter层会与View层进行绑定联系。由Presenter层控制View,同时,View层也将调用Presenter进行逻辑及界面显示。View层通常是我们的Fragment或者Activity,那么本文就注册的界面(RegisterFragment) 对最顶部的Presenter,View一直到BasePresenter,BaseView进行封装。

首先,我们创建一个RegisterFragment和一个RegisterPresenter,它们必须按照一定得规矩进行。(此处RegisterFragment即为View层)

So我们创建一个接口文件RegisterContract,其中包含两个内部接口View以及Presenter

那么接口文件中应该有什么方法呢?

在Presenter中,我们应该有注册的方法Register。也应该有presenter的开启和销毁方法(start,destroy)。

在View中,我们应该有注册成功后的回掉方法用以告诉Fragment我们注册成功可以开始下一步操作。

那么你会发现在这些方法中并非所有方法都是RegisterFragment或者RegisterPresenter共有的,so我们进行提取,我们将不属于Register注册功能特有的方法提取到BaseContract中。于是,我们的RegisterContract可以写了

//RegisterContract的特有契约 interface RegisterContract { interface View{ //注册成功 void registerSuccess(); } interface Presenter{ //发起一个注册 void register(String phone,String name,String password); }

}(此处RegisterContract未完成,还未继承自基类Contract) 那么接下来该写BaseContract了,在此之前我们想一个问题,每个View层中都需要一个Presenter对吧,那么我们就需要在View层中也就是RegisterFragment中设置Presenter,也就是将View层与Presenter层进行绑定,所以我们需要在基本契约(BaseContract)中为View添加一个方法setPresenter(Presenter)

我们所有的Presenter都必须继承BaseContract.Presenter的实现类BasePresenter(一会儿新建),但它是什么种类,是RegisterPresenter还是LoginRegister我们不知道,所以在setPresenter是里面的参数必须是一个泛型,那么这个泛型我们就需要在创建View接口时为它定义好,也就是T extend Presenter,所以我们可以写BaseContract了。

/**

  • MVP格式中公共的基本契约 */ public interface BaseContract { interface View<T extends Presenter> {//此处的presenter即为下面定义的Presenter //公共的:显示一个字符串错误 void showError(@StringRes int str); //公共的:显示进度条 void showLoading(); //支持设置一个Presenter void setPresenter(T presenter); } interface Presenter { //共同的开始方法 void start(); //共同的销毁触发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值