什么是回调(爱哥出品)

现在我们来总结下满足回调的两个基本条件:

1.Class A调用Class B中的X方法

2.ClassB中X方法执行的过程中调用Class A中的Y方法完成回调

一切看上去都很完美~以上例子代码简单通俗地描述了回调,但是这里我就会有这样一个疑问:假设总经理出差前交了件事情给我去办,不巧……副总经理也要给我件事去办,更无耻的是……主管也发任务过来了,都要求说做完就打电话通知他们……这时我们就要定义更多类,什么总经理类啦~经理类啦~主管类啦~杂七杂八的类,但是这些杂七杂八的大爷们都要求做完事情就电话通知,每个类都会有一个类似phoneCall的方法作为回调方法,这时,我们利用面向对象的思想来看~是不是可以把这个回调方法抽象出来作为一个独立的抽象类或接口呢?多态的思想油然而生~~~鉴于JAVA接口的好处,我们就定义一个名为CallBack的接口作为回调接口,再在该接口下定义一个名为backResult的抽象方法作为回调方法,让那些总经理类啦~经理类啦~主管类啦~什么的都去实现该接口,这时候我们就来改造下我们的项目:


CallBack代码如下:

[java]  view plain copy print ?
  1. package com.aige.test;  
  2.   
  3. /** 
  4.  * @description 回调接口 
  5.  * @author Aige 
  6.  * @since 2014/11/6 
  7.  */  
  8. public interface CallBack {  
  9.   
  10.     // 回调方法  
  11.     public void backResult(String result);  
  12. }  

Manager代码改造后如下:

实现CallBack接口重写backResult方法

[java]  view plain copy print ?
  1. package com.aige.test;  
  2.   
  3. /** 
  4.  * @description 该类用来模拟总经理 
  5.  * @author Aige 
  6.  * @since 2014/11/6 
  7.  */  
  8. public class Manager implements CallBack {  
  9.     /** 
  10.      * @param personnel 
  11.      *            传入一个员工类的对象 
  12.      */  
  13.     public Manager(Personnel personnel) {  
  14.   
  15.         // 想让该让员工做什么  
  16.         personnel.doSomething(this"整理公司文件");  
  17.     }  
  18.   
  19.     /** 
  20.      * @description 当员工做完总经理让他做的事后就通过该方法通知总经理 
  21.      * @param result 
  22.      *            事情结果 
  23.      */  
  24.     public void backResult(String result) {  
  25.         System.out.println("事情" + result);  
  26.     }  
  27. }  

Personnel代码改造后如下:

doSomething方法不再传入一个Manager对象而是一个CallBack接口:

[java]  view plain copy print ?
  1. package com.aige.test;  
  2.   
  3. /** 
  4.  * @description 该类用来模拟员工 
  5.  * @author Aige 
  6.  * @since 2014/11/6 
  7.  */  
  8. public class Personnel {  
  9.     public void doSomething(CallBack callBack, String task) {  
  10.         // 总经理通过doSomething方法告诉员工要做什么  
  11.         System.out.println("总经理要你做" + task);  
  12.   
  13.         String result = "做完了";  
  14.   
  15.         // 当事情做完了我们就通过总经理公布的phoneCall方法通知总经理结果  
  16.         callBack.backResult(result);  
  17.     }  
  18. }  
Main代码不变,执行结果也是一样的。

至此,回调的基本概念差不多就是这样了~其实回调真心不难理解,但是回调在Android中相当重要,几乎处处可见回调机制,如果你能理解到回调的奥秘~我相信对你的Android技术是一个不小的提升~~吃药去了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值