android MVC 架构介绍,面向接口的编程。

————阅读此文章需要有安卓开发经验————

MVC想必大家都不会陌生,我来稍微介绍一下我的MVC架构。

M - 模型层 (model)

V - 试图层  (view)

C - 控制层 (control)

 

MVC的目的,细化分工,降低耦合。提高代码的重用性,可维护性,拓展性,可读性。

模型层一般都是API,在服务器上的,Android开发者不需要关心,只管调用就好。

视图层负责显示信息,控制UI和用户交互,当需要从服务器读取数据的时候怎么办呢。

正确的做法是:

告诉控制层:“嘿,控制层,快给我数据,用户要看,赶紧的。”

控制层收到指令后:”好的,我这就去拿,准备好了第一时间告诉你。“

一会儿控制层处理好数据了,告诉视图层:“这是你要的数据,拿去给用户吧。”

试图层拿到数据展示给用户,任务完成!

 

 

 

比如说一个显示天气信息的应用,视图层对控制层说:“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  吧啦吧啦的不给你,你看着办吧。  

    }

});

 

视图层就只管和用户的交互,关于数据的事情嘛,丢给控制层好了。

 

就是这样,代码都经过了一些简化,希望大家可以理解这样编程的好处。

 

理解了之后要多使用,熟能生巧嘛。

 

 

posted @ 2014-10-30 09:43  王半仙_  阅读(1029)  评论(0编辑  收藏  举报