android——mvp使用以及简单封装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunmmer123/article/details/79360348

MVP使用以及简单封装

MVP具体封装见博客高级MVP架构封装演变全过程

Demo地址:https://github.com/wtt123/MvpDemo

最近在项目中使用了mvp模式,在此做一个学习总结:

MVP的认识:

  1. 首先熟悉mvc与mvp的最清晰明了的区别 MVC中是允许Model和View进行交互的,而MVP中很明显,Model与View之间的交互由Presenter完成。还有一点就是Presenter与View之间的交互是通过接口的。
  2. MVP模式的优点MVP中将逻辑层与view层分离开,结构清晰,代码也易读易懂,model层负责数据的请求和数据的处理,写好presenter和view后,基本不用改,只需要关注model的变化就可以,另外一个好处是activity内部类的使用基本上已经很少了,部分ui逻辑判断也可以转到presenter去处理,ui层也非常清晰干净。
  3. MVP的缺点:产生比较多的类

MVP的实例应用:

(大概的架构就是如上图)

架构解释

  1. model层里我主要封装了网络请求的逻辑
  2. presenter里我主要处理了相对应activity层的逻辑(比如点击按钮请求网络,成功/失败后通过在view层写的相对应的接口类把方法回调给activity)
  3. view里主要放回调接口,presenter与activity(ui层通讯),通过暴露出来的接口回调,在presenter里使用view里的方法传一些东西给activity,然后我ui上执行操作改变等

代码分析

Demo现在做一个简单的操作,来熟悉练习MVP,页面显示倒计时,点击按钮请求网络,因为之前写的一个项目中每个页面都需要倒计时,所以做个案例的时候,我把倒计时和loading的显示和隐藏放在了父接口BaseMvpView中,所有的所有mvpView都要继承父类,这样写的话减少每个接口方法都写同种方法

 

  •  写一个基类MvpView,里面放每个activity中都将用到的方法
/**
 * 所有mvpView的父接口
 * 里面写的方法基本上每个activity都要用的
 */

public interface BaseMvpView {
    Activity getActivity();

    void toTime(int millisUntil, CountDownTimer timer);

    //loading隐藏
    void hideLoading();

    //loading显示
    void showLoading();

}
  • 对应acticty写自己的mvpview(继承父view),暴露出自己要的东西,我这边把网络请求后的结果回调给我的activity
/**
 * Created by wangting on 2018/2/24.
 * MainActivity对于要实现的接口
 */

public interface MainView extends BaseMvpView{
    void toMainActivity(Object data);
}

猜你喜欢

转载自blog.csdn.net/sunmmer123/article/details/79360348