对于接口回调的简单理解

接口回调在实际的应用中可以说是无处不在的,比方说你向服务器请求一个数据,请求结束的时候你需要在界面上进行一个显示,当然你可以选择一直等待,但是这样做效率实在是太低,并如果你在android 的Activity中等待的话很有可能会导致程序崩溃。这时候你就需要接口回调了。

下面就来简单介绍一下接口回调的简单概念,

构成接口回调有以下的几个要素:
整个机制构成三要素就是:我(客户端)你(服务端),约定(接口)
Java 中没有函数指针这一说,因为java没有指针,但是并不代表着它不会使用这个功能。事实上,引用就是实现了指针的功能。
回调方法就是一个通过方法指针来调用的方法。如果我将这个方法的指针(地址,引用)通过形参传递到另一个类的某个方法里,那么当这个类调用该方法里面我所传入的指针时,就能调用我这边的方法。
主要步骤:

    * 定义接口 Callback ,包含回调方法 callback();
    * 服务端提供注册的方法,并设定在某个条件下会回调接口方法;
    * 客户端提供接口的实现方法,并注册到服务端,把方法地址传进去。

先来看一个最基本的回调:

[java]   view plain  copy
  1. public class Me  
  2. {  
  3.        public Me(You you)  
  4.        {  
  5.               // TODO Auto-generated constructor stub  
  6.               you.dosth(this,"整体公司文件");  
  7.                 
  8.        }  
  9.        public void doresult(String result)  
  10.        {  
  11.               System.out.println("事情"+result);  
  12.        }  
  13.          
  14. }  
  15.   
  16. public class You {  
  17.        public void dosth(Me me, String task) {  
  18.               // TODO Auto-generated method stub  
  19.               System.out.println("你要我做"+task);  
  20.               String result="做完,搞定";  
  21.               me.doresult(result);  
  22.        }  
  23. }  
  24.   
  25. public class Test {  
  26.        public static void main(String[] args) {  
  27.               // TODO Auto-generated method stub  
  28.               You you=new You();  
  29.               new Me(you);  
  30.        }  
  31. }  


首先me类调用了you类中的dosth()方法,you类再在dosth()方法中回调me类中的doresult()方法。
这时候如果除了me还有其他的人向你发出请求,那么这时候就需要定义一个回调接口,让所有发出请求的类都实现这个接口。
 
[java]   view plain  copy
  1. public interface Bound {  
  2.        public void doresult(String s);  
  3. }  
  4.   
  5. public class Me implements Bound  
  6. {  
  7.        public Me(You you)  
  8.        {  
  9.               // TODO Auto-generated constructor stub  
  10.               you.dosth(this,"整体公司文件");  
  11.                 
  12.        }  
  13.        public void doresult(String result)  
  14.        {  
  15.               System.out.println("事情"+result);  
  16.        }  
  17.          
  18. }  
  19.   
  20. public class You {  
  21.        public void dosth(Bound me, String task) {  
  22.               // TODO Auto-generated method stub  
  23.               System.out.println("你要我做"+task);  
  24.               String result="做完,搞定";  
  25.               me.doresult(result);  
  26.        }  
  27. }  
  28.   
  29. public class Test {  
  30.        public static void main(String[] args) {  
  31.               // TODO Auto-generated method stub  
  32.               You you=new You();  
  33.               new Me(you);  
  34.        }  

说到底回调思想还是用到了java中多态的概念 难过
   
转载地址:https://blog.csdn.net/yalishadaa/article/details/53946153

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值