android MVC 架構介紹,面向接口的編程。

————閱讀此文章須要有安卓開發經驗————編程

MVC想必你們都不會陌生,我來稍微介紹一下個人MVC架構。服務器

M - 模型層 (model)架構

V - 試圖層  (view)ide

C - 控制層 (control)spa

 

MVC的目的,細化分工,下降耦合。提升代碼的重用性,可維護性,拓展性,可讀性。code

模型層通常都是API,在服務器上的,Android開發者不須要關心,只管調用就好。blog

視圖層負責顯示信息,控制UI和用戶交互,當須要從服務器讀取數據的時候怎麼辦呢。接口

正確的作法是:開發

告訴控制層:「嘿,控制層,快給我數據,用戶要看,趕忙的。」get

控制層收到指令後:」好的,我這就去拿,準備好了第一時間告訴你。「

一下子控制層處理好數據了,告訴視圖層:「這是你要的數據,拿去給用戶吧。」

試圖層拿到數據展現給用戶,任務完成!

 

 

 

好比說一個顯示天氣信息的應用,視圖層對控制層說:「VIP用戶定位成功,在火星,給我火星的天氣狀況。」

控制層說:「好,我去給你找數據,有結果就告訴你。」

一下子控制層找到數據了;「試圖層,我找到火星最新的天氣狀況了,24攝氏度,八級大風,輻射指數100。「

試圖層開心的拿到了數據,展現給用戶。

 

以上就說一個簡單邏輯,試圖層和用戶交互,當用戶須要數據的時候,直接丟給控制層,這裏的[VIP用戶,火星]就做爲參數傳遞給控制層。

控制層拿到數據(應該去模型層拿,回頭再說)。數據[24攝氏度,八級大風,輻射指數100]就丟給試圖層。

 

最後用戶看到數據,不由大喜,老子在火星你都能搞定,幹得漂亮,回頭叫我投資你這APP 十個億。

 

 

 

太羅嗦了,來上部分代碼說明。

 

 

 

//定義接口,用於回調(拿到數據通知視圖層) ,面向接口的實現方式,請務必要理解這段代碼。

public interface SuccessHandler<T> {

public void handle(T model);

}

 

public interface ErrorHandler {

public void handle(String message);

}

 

 

 

package com.xxx.modles   //放在控制層的包裏面

public class Weather{              //這個類就是天氣的控制層了,它負責弄搞邏輯,弄數據。

 

  public static void getWeatherInfo(用戶級別,地點,final SuccessHandler<Weahter> sh,final ErrorHandler errorHandler){

 

  if(在地球){

    //地球的數據很好拿,隨隨便便就拿到了,給你

    sh.handle(地球天氣數據);

  }

  else if(看看是否是VIP){

    //好吧,VIP大爺,給你火星數據

    sh.handle(火星天氣數據);

  }

  else {

    //不是就要告訴試圖層,我靠,火星的數據必需要要VIP權限的。

     eh.handel("這哥們不是VIP,不能給他火星的數據");

  }

}

}

}

 

 

控制層就是簡單的作一些邏輯判斷和取數據,不要拿去視圖層判斷。

 

視圖層代碼

 

Weather.getWeatherInfo(用戶,地址,new SuccessHandler<List<Weahter>>() {

 

    @Override

    public void handle(List<Weahter> weather) 

       拿到數據啦,好開心,顯示給用戶。喜歡就給五星評價哦。

    }

    } , new ErrorHandler() {

 

    @Override 

    public void handle(String message) {

       用戶你好,不是我不幫你,是控制層說 message  吧啦吧啦的不給你,你看着辦吧。  

    }

});

 

視圖層就只管和用戶的交互,關於數據的事情嘛,丟給控制層好了。

 

就是這樣,代碼都通過了一些簡化,但願你們能夠理解這樣編程的好處。

 

理解了以後要多使用,熟能生巧嘛。

相關文章
相關標籤/搜索