美文网首页Mvpandroid
MVP 的二次封装

MVP 的二次封装

作者: 大笨龙___ | 来源:发表于2018-04-25 09:35 被阅读277次

MVP 模式好不好,有的人说好,因为大家都说好,有的人说不好,代码太多。其实还是好的,不好是因为姿势不对。

MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。

mvp 主要目的在于代码解耦和方便单元测试

下面将从代码方面解析如何封装一个简单的mvp

一、Presenter


public abstract class BasePresenter<T> {
   protected Reference<T> viewRef;

   public  void attachView(T view) {
       viewRef = new WeakReference<T>(view);
   }

   public void detachView() {
       if (viewRef != null) {
           viewRef.clear();
           viewRef = null;
       }
   }
}





/**
* 创建人:北斗(byl)
* 功能描述:
*/
public  class LoginPresenter extends BasePresenter<LoginView> {
   private LoginView loginview;
   private LoginModle loginModle;

   public LoginPresenter(LoginView loginView){
       this.loginview=loginView;
       loginModle=new LoginModle();
   }
   public  void doLogin() {
       loginModle.login( new OnLoginListener() {
           @Override
           public void loginSucess() {
               loginview.loginSuccess();
           }

           @Override
           public void loginFaild(int code, String msg) {
              loginview.loginFaild(msg);
           }
       });
   }

   public  void doClear(){}
}

二、View层

public interface BaseView {
   void showToast(String message);

   void showLoading();

   void hideLoading();
}




public interface LoginView extends BaseView {
   public void loginSuccess();
   public void loginFaild(String err);
}

三、modle 层

public class LoginModle {
    private String check="";
    private String pwd="";
    public void login(final OnLoginListener listener){
      
    }
}

四、使用

public abstract class BaseUIActivity<V extends BaseView, T extends BasePresenter<V>> extends SimpleActivity implements BaseView {
    public T presenter;

    @Override
    public void aheadWindown() {
        initPresenter();
        initSpeak();
        initWakeUp();
    }



    public abstract int getLayout();

    public abstract void findView();

    public abstract void setValue();

    protected abstract T createPresenter();

    public void initPresenter() {
        presenter = createPresenter();
        if (presenter != null) {
            presenter.attachView((V) this);
        }
    }


    @Override
    public void showToast(String message) {

    }

    @Override
    public void showLoading() {

    }

    @Override
    public void hideLoading() {

    }


}

相关文章

  • MVP 的二次封装

    MVP 模式好不好,有的人说好,因为大家都说好,有的人说不好,代码太多。其实还是好的,不好是因为姿势不对。 MVP...

  • 二次封装MVP框架

    在github淘到的mvp框架,年前就一直想要研究下,但是年前比较忙,就在过年期间有空弄了一下,今天写下心得,不出...

  • 高级MVP架构封装演变全过程

    高级MVP架构封装演变全过程(转) 本文不会讲解什么是MVP,如果还不太了解MVP请自行查阅资料,本文重点是封装一...

  • Base封装(二)-- 封装属于自己的Library(UI篇)

    绪论 之前分享了一篇 Base封装(一)--我的最简MVP架构简单的封装了自己的MVP架构,至于BaseActiv...

  • mvp封装

    什么是mvp,我就不多说,mvp作用就是用一个类作为桥梁,然后进行数据和view的一些交互。通过接口进行相互交流。...

  • MVP的封装

    此篇是对一个小例子彻底搞懂 MVP的学习笔记。 1.分别定义三个底层接口,封装M、V、P中的通用操作 BaseMo...

  • flutter-mvp架构

    flutter_mvp 项目介绍 该项目为flutter的mvp的基础架构,主要封装了mvp基础类,使用dio进行...

  • Flutter MVP 封装

      在 Android 开发中经常会用到一些架构,从 MVC 到 MVVP、MVVM等,这些架构会大大的解耦我们代...

  • Kotlin+Retrofit+RxJava+MVP封装(三)

    前言 Kotlin+Retrofit+RxJava+MVP封装(一)Kotlin+Retrofit+RxJava+...

  • Kotlin+Retrofit+RxJava+MVP封装(二)

    前言 Kotlin+Retrofit+RxJava+MVP封装(一)Kotlin+Retrofit+RxJava+...

网友评论

本文标题:MVP 的二次封装

本文链接:https://www.haomeiwen.com/subject/ngrelftx.html