- 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包中的登录方法)
③做一些开始登陆后的事情