浅谈Mvp

简单谈谈mvp
M - Model  
V -View 
P -presenter
这就是mvp模式
以前都是用MVC(模型视图控制器)
一开始的时候相信很多人都有点不太理解mvp
在MVC中
    model相当于bean(服务器返回的数据)
    View相当于xml视图
    controller 相当于(activity)
在activity之中处理请求服务器返回结果进行数据填充
这样会导致Activity过去庞大导致后期维护极为不方便解耦特别困难

MVP与mvc最大的区别就是复用性跟解耦
MVP:
    Model:
        是负责向服务器发送请求
        而不是再只是单纯的一个bean实体类而已
       //params代表参数
      //listener代表成功或者失败后回调给调用这个Model的Presenter
    @Override
    public void LoginModel(String params, final ResponseListener listener) {
      //发送请求
        String Url = HttpUrl+params;
        //最基本发送请求事例 listener中是给外面处理成功失败后应该做什么事情
        http.executeGetRequest(Url, head, listener)
    View:
        在外部定义接口然后让Activity实现这个接口
        去处理请求成功和失败对页面数据进行修改
       public interface ILoginView {
           //成功返回的实体类对象
           void onSuccess(UserBean bean);
           //失败返回提示
           void onFail(String error);
    Presenter:
        MOdel和View的中间者
        构建Model与View之中的桥梁
        在Presenter拥有两个对象
            1.model的实现类
            2.实现View接口的类(一般是Activity)
public  LoginPresenter(IAddPraiseView view) {
       mIAddPraiseView = view;
       mAddPraiseModel = new loginModel();
   }
    public void login(String params) {
       mLoginModel.loginModel(params, new LoginListener() {

           @Override
           public void onSuccess(LoginBean loginBean) {
               if (!Utils.isNull(loginBean) {
                   return;
               }
 
               if (loginBean.code.equals("succeed")) {
                   // 根据不同结果对view进行通知
                   mILoginView.loginSuccess(user);
               } else{
                       mILoginView.loginFailure(loginBean.tmessage);
               }

           }
           @Override
           public void onFailure(String result) {
               // 根据不同结果对view进行通知
               mILoginView.loginFailure("网络不给力,请重试!", false);
           }

           @Override
           public void parseError() {
               mILoginView.showParseError();
           }

       });
   }
    因为activity中实现了View接口所以在activity中实现请求成功后改变数据源做ui界面改变

你可能感兴趣的:(浅谈Mvp)