文章目录
- 前言
-
- MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中,Activity应该是属于View这一层。而实质上,它既承担了View,同时也包含一些Controller的东西在里面。这对于开发与维护来说不太友好,耦合度大高了。把Activity的View和Controller抽离出来就变成了View和Presenter,这就是MVP模式。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e7469fcca61a47a1807ad3257849e1c5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGJqMjN2czY=,size_20,color_FFFFFF,t_70,g_se,x_16) 让我们来用mvp写一个登录界面 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b320b67edb2e4c4bb2b1db8f9e4fd94b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGJqMjN2czY=,size_13,color_FFFFFF,t_70,g_se,x_16)
- 一、Model层
-
- 二、Present 层
-
- 三、View 层
-
- 总结
前言
MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中,Activity应该是属于View这一层。而实质上,它既承担了View,同时也包含一些Controller的东西在里面。这对于开发与维护来说不太友好,耦合度大高了。把Activity的View和Controller抽离出来就变成了View和Presenter,这就是MVP模式。
![在这里插入图片描述](https://img-blog.csdnimg.cn/e7469fcca61a47a1807ad3257849e1c5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGJqMjN2czY=,size_20,color_FFFFFF,t_70,g_se,x_16)
让我们来用mvp写一个登录界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/b320b67edb2e4c4bb2b1db8f9e4fd94b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGJqMjN2czY=,size_13,color_FFFFFF,t_70,g_se,x_16)
一、Model层
1.定义Model接口
public interface ILoginModel {
void login(String account, String pwd, LoginListener listener);
}
2.实现ILoginModel ,用子线程睡眠3秒来模拟网络的请求过程
public class LoginModelImpl implements ILoginModel {
private final Handler handler = new Handler(Looper.getMainLooper());
@Override
public void login(String account, String pwd, LoginListener listener) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3_000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (TextUtils.equals(account, "lbj") && TextUtils.equals(pwd, "123")) {
handler.post(new Runnable() {
@Override
public void run() {
listener.onSuccess();
}
});
} else {
handler.post(new Runnable() {
@Override
public void run() {
listener.onFailed();
}
});
}
}
})