zoukankan      html  css  js  c++  java
  • android 回调的理解(结合接口)

    • 什么是回调

    回调其实是一种双向调用模式,也就是调用方在接口被调用时也会调用对方的接口。通俗的解释为:类A调用了类B中的方法1,然后类B最后又反过来调用类A中的方法2,即把结果返回给类A。

    • 回调的具体实现(通过接口)

       1、Class A实现接口CallBack callback——背景1

       2、class A中包含一个class B的引用b ——背景2

       3、class B有一个参数为callback的方法f(CallBack callback) ——背景3

       4、A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C

       5、然后B就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D

      这里通过一个经典的例子来说明回调的具体实现机制,在这个机制里,包含两个类和一个接口,接口的定义如下:

    //相当于接口InA
    public interface BoomWTC{
      //获得拉登的决定
      public benLaDengDecide();
    
      // 执行轰炸世贸
      public void boom();
    }

      类A的定义如下,它作为一个主类,实现了接口

    //相当于class A
    public class At$911 implements BoomWTC{   
      private boolean decide;
      private TerroristAttack ta;      //类B
    
      public At$911(){      //构造函数
        Date now=new Date();
        SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
        this.dicede= myFmt.format(dt).equals("01/09/11 09:44");
        this.ta=new TerroristAttack();
      }
    
      //获得拉登的决定
      public boolean benLaDengDecide(){
        return decide;
      }
    
      // 执行轰炸世贸
      public void boom(){
        ta.attack(new At$911);//class A调用class B的方法传入自己的对象,相当于【you call me】
      }
    }

      类B的定义如下:

    public class TerroristAttack{
      public TerroristAttack(){
      }
    
      public attack(BoomWTC bmw){   //调用类A中的方法
        if(bmw.benLaDengDecide()){    /*class B在方法中回调class A的方法,相当于【i call you back】*/
           
        }
      }
    }

       从例子可以看出,类B是通过接口回调了类A的方法

     程序猿必读

  • 相关阅读:
    【SpringBoot】04.SpringBoot整合Filter的两种方式
    【SpringBoot】03.SpringBoot整合Servlet的两种方式
    【SpringBoot】02.编写HelloWorld
    【SpringBoot】01.创建Springboot项目及启动器
    Nginx——安装Nginx(二)
    Nginx——Nginx概述(一)
    与、或、异或的运算
    设计模式——单例模式
    MYSQL在当前日期的基础上加上N(年月日分秒)
    阿里云简单的HTTPS配置
  • 原文地址:https://www.cnblogs.com/longzhongren/p/6111782.html
Copyright © 2011-2022 走看看