• View 对应于Activity,负责View的绘制以及与用户交互
  • Model 依然是业务逻辑和实体模型
  • Presenter 负责完成View于Model间的交互



减少了Activity的职责,简化了Activity中的代码,将复杂的逻辑代码提取到了Presenter中进行处理。与之对应的好处就是,耦合度更低,更方便的进行测试。




区别:    




MVC中是允许Model和View进行交互的,而MVP中很明显,Model与View之间的交互由Presenter完成。还有一点就是Presenter与View之间的交互是通过接口的



使用方式:以登录页面为例


1、在entity包中创建一个实体类(包含登录用户名和登录密码)


2、在listener包中创建登录的接口(包含成功和失败)


3、在model包中创建一个实现登录的业务逻辑的类


      例如:


public void login(String username, String password, OnLoginListener loginListener) {
// TODO 开始登录
if ("成功") {
loginListener.loginSuccess();
    } else {
loginListener.loginFailed();
    }
}



4、在view包中创建一个关于Activity UI的操作的接口,例如:获取用户名、密码;清除密码;显示和隐藏Dialog;登录成功或失败的操作。



5、在presenter包中创建一个Activity和业务逻辑和实体交互的一个类。例如登录的具体实现。
①做一些登录前的事情
②开始登录(调用model包中的登录方法)
③做一些开始登陆后的事情