zoukankan      html  css  js  c++  java
  • 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  吧啦吧啦的不给你,你看着办吧。  
    
        }
    
    });

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

     

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

     

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

     

  • 相关阅读:
    【硬件】交换机与路由器概述
    【网络】IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解
    【网络】网桥
    【归档】Mysql大表归档
    【锁】Innodb锁
    【磁盘】顺序IO比随机IO快
    【硬盘】RAID卡
    【基础】占用空间大小(数据页、线程)
    【SQL】ON DUPLICATE KEY UPDATE
    【基础】Hint控制语句执行
  • 原文地址:https://www.cnblogs.com/banxian/p/4061802.html
Copyright © 2011-2022 走看看