Android使用mvp模式入门

什么是MVP (Model-View-Presenter)

MVP模式:

View不直接与Model交互,而是通过与Presenter交互来与Model间接交互

PresenterView的交互是通过接口来进行的,更有利于添加单元测试

通常ViewPresenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑   

举例个登录例子。

效果:

 

项目结构

(1)首先我们需要一个UserBean,用来保存用户信息:

public class UserBean {
    private String mobile ;
    private String userpwd ;
    public UserBean (String mobile, String userpwd) {
        this .mobile = mobile;
        this .userpwd = userpwd;
    }
    public String getMobile() {
        return mobile;
    }
    public String getUserpwd() {
        return userpwd;
    }
}

(2)再来看看View接口:

public interface  IUserView {
    int getID();
    String getMobile();
    String getUserPwd();
    void setMobile (String mobile);
    void setUserpwd (String userpwd);
}

(3)Model接口:

public interface IUserModel {
    void setID (int id);
    void setMoblie (String moblie);
    void setUserPwd (String userPwd);
    UserBean load (int id);
}

public class UserModel implements IUserModel {

    private String  usermobile;
    private String userPwd;
    private int mID;
    private SparseArray<UserBean> mUsererArray = new SparseArray<UserBean>();

    @Override
    public void setID(int id) {
        // TODO Auto-generated method stub
        mID = id;
    }

    @Override
    public void setMoblie(String mobile) {
        // TODO Auto-generated method stub
        usermobile = mobile;
    }

    @Override
    public void setUserPwd(String userpwd) {
        // TODO Auto-generated method stub
        userPwd = userpwd;
        UserBean UserBean = new UserBean(usermobile, userpwd);
        mUsererArray.append(mID, UserBean);
    }

    @Override
    public UserBean load(int id) {
        // TODO Auto-generated method stub
        mID = id;
        UserBean userBean = mUsererArray.get(mID, new UserBean("no data ",
                "not data"));
        return userBean;

    }
}

(4)Presenter:

     至此,Presenter就能通过接口与View及Model进行交互了:

public class UserPresenter {
    private IUserView mUserView ;
    private IUserModel mUserModel ;

    public UserPresenter (IUserView view) {
        mUserView = view;
        mUserModel = new UserModel();
    }

    public void saveUser( int id , String  moblie , String userpwd) {
        mUserModel .setID (id );
        mUserModel.setMoblie (moblie );
        mUserModel.setUserPwd (userpwd );
    }

    public void loadUser( int id ) {
        UserBean user = mUserModel .load (id );
        mUserView.setMobile(user.getMobile ());//通过调用IUserView的方法来更新显示
        mUserView.setUserpwd (user.getUserpwd ());
    }
}

(5)LoginActivity:

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
        case R.id.btn_login:
            mUserPresenter.saveUser(getID(), getMobile(), getUserPwd());
            break;
        case R.id.btn_getValue:
            mUserPresenter.loadUser(getID());
            break;
        default:
            break;
    }
}

View只负责处理与用户进行交互,并把数据相关的逻辑操作都扔给了Presenter去做。而Presenter调用Model处理完数据之后,再通过IUserView更新View显示的信息


源码下载地址

更多源码请关注微信公众号:aikaifa ,第一时间推送博文源码


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值