回调方法是什么及其理解
2018-03-12 10:34
274 查看
回调方法是类A调用类B的方法,然后B又在某个时候反过来调用类B的方法a,这个a就是回调方法.
上面这句话读起来绕口且还是对于回调方法还是没有什么实质性的理解,下面举个例子来解释回调方法:
儿子(Son)要睡午觉了,告诉妈妈(Mother)要一个小时之后叫他醒来,下面是两个类的定义
1 public class Son { 2 3 public void sleep(Mother m,int time){ 4 System.out.println("son:sleep"); 5 m.call(this,time);//告诉妈妈多久叫醒自己 6 } 7 8 public void aware(){ 9 System.out.println("son:aware"); 10 } 11 }
1 public class Mother { 2 3 //这里简单起见使用的是用i判断 4 public void call(Son s,int time){ 5 int i=0; 6 while(i++==time); 7 System.out.println("mother:call"); 8 s.aware();//回调 9 } 10 11 }
测试代码
1 public class Test { 2 3 public static void main(String[] args) { 4 Son s=new Son(); 5 Mother m=new Mother(); 6 s.sleep(m,100); 7 } 8 }
在儿子睡觉之前告诉妈妈经过time时间后叫醒自己(this),妈妈在到时间之后,叫醒儿子(s.aware()).这里儿子对应定义中的类A,妈妈对应定义中的类B,aware()方法就是回调方法.a
以下是个人对回调方法的理解:
回调使一个功能模块更加灵活,比如上述例子中是儿子让妈妈叫醒他,那么假如又多了一个爸爸也想让妈妈叫醒他呢,这里又需要重载一个call,这里可能会有人说,使用多态实现啊!那假如不是儿子叫妈妈叫醒他自己,而是叫妈妈"叫醒"电视机呢,这里的电视机跟儿子总不会有同一个父类吧.而使用了回调方法,你只需要让被叫醒的对象实现aware()方法即可,使功能模块能够更加灵活.
在许多框架中都都能看到回调的影子,比如spring在IOC容器初始化时,父容器会调用子容器的方法,子容器也会调用父容器的方法.
相关文章推荐
- 关于asp.net mvc中Controller中的方法返回值类型ActionResult及其子类的理解
- js中, apply方法简单理解(实现回调函数及参数传递)
- Android中的Cursor到底是什么?如何理解Cursor的方法都在做什么事情?
- 理解堆栈及其利用方法
- 一个故事理解什么是接口回调
- 理解 Ajax 及其工作原理,构建网站的一种有效方法
- 理解Android中Activity的方法回调
- Android 接口函数回调(callback)的基础使用方法与理解【回调】的具体实现
- 容易理解的快速排序算法及其相关算法的总结(含java实现方法)
- 理解堆栈及其利用方法
- 什么是JTAG及其使用方法
- IT第七天 - 类及其属性、方法的理解,断点调试初识,代码优化总结,编程逻辑培养
- java中什么是构造方法及其作用
- 一个故事理解什么是接口回调
- 理解 Ajax 及其工作原理,构建网站的一种有效方法
- 什么是Dom4j及其初级使用方法
- C++中字符串的几种表示方法及其深入理解
- java多线程回调方法的理解
- 1.为什么需要继承?如何继承?继承到什么? 2.方法的重载与重写的区别 3.类型的自动转换和强制转换 4.子类特有的方法的调用规则 5.子类重写的方法的调用规则 6.多态的理解 7.面向对象的三大特征
- 理解堆栈及其利用方法