Android MVP模式简单易懂的介绍方式 (三)
最近正在研究Android的MVP模式。看了很多文章,基本上都是长篇大论,一堆理论。但这里,我们不从理论出发,我们从最最原始实用的介绍出发。那么,这里我默认大家都是有基本的MVP理论知识的,如果没有,可以稍微看下MVP的基本理论。当然,不看基本理论,对于阅读本文也是没有障碍的。这里我们只需要知道一个最最核心的理论:
MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。
这个理论,看起来狠抽象是吧,简单的来说,就是把Activity的逻辑抽离出来,让Activity更加简洁,并且逻辑可复用。MVP其实处理的就是这么一回事。如果有在网上找过MVP的文章,相信大家都看过,很多都是用登陆来做Demo并加以介绍。本文一样,但是本文会从实际思路出发,一步一步带领大家了解MVP。
首先,看看我们的项目结构把。分包这个没啥好说的,就是根据MVP的文件夹划分,这个没有强制规定。可以根据自己的喜好分。然后,这里只是为了方便大家对项目整体了解,才第一步挂出项目结构。其实,实际开发种,我们应该从需求分析出发。
那么现在我们就从需求分析,一步一步将整个目录搭建起来。
首先,我们的目的用MVP做一个登陆模块。那么我们先从数据出发,登陆需要什么呢?账号,密码,同时还需要验证账号密码的正确性。因此,我们需要一个model接口,这个接口需要拥有拿到账号,拿到密码,验证账号密码的方法。因此,得到下面这个接口。
public interface IUser { //拿到账号
String getName();
//拿到用户名
String getPassword();
//验证登陆
int checkUserValidity();
}
那么既然有了接口,那必须要有人来实现他对吧。因此,我们需要在写一个model类来实现这个接口。这个类除了实现接口的所有方法,为了方便待会使用,我们还需要给他一个构造方法。那么,来到这一步,Model也就完成了。我们将登陆验证的判断逻辑放到了Model中。这样,验证登陆的逻辑也独立开来无关Activity了。为了避免篇幅过长,接下来将在下一篇文章中介绍下一步操作。Android MVP模式简单易懂的介绍方式 (二)
public class UserModel implements IUser { private String name;
private String passwd; public UserModel(String name, String passwd) {
this.name = name;
this.passwd = passwd;
} @Override
public String getName() {
return name;
} @Override
public String getPassword() {
return passwd;
} @Override
public int checkUserValidity() { //这里其实就是对登陆进行判断。其实就是对数据进行处理判断,一般我们写在Activity里面。写在这里不久又给Activity减负了嘛。
if (!name.equals("admin")) {
//用户名错误
return -1;
}
if (!passwd.equals("123456")) {
//密码错误
return -2;
}
if (name.equals("admin") && passwd.equals("123456")) {
//登陆正确
return 1;
}
return 0;
}
}