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; } }