java callback回调_JAVA回调机制(CallBack)详解(一)

序言

最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我来说,缺了一个循序渐进的过程。此处,将我对回调机制的个人理解,按照由浅到深的顺序描述一下,如有不妥之处,望不吝赐教!

开始之前,先想象一个场景:幼稚园的小朋友刚刚学习了10以内的加法。

第1章. 故事的缘起

幼师在黑板上写一个式子 “1 + 1 = ”,由小明同学来填空。

由于已经学习了10以内的加法,小明同学可以完全靠自己来计算这个题目,模拟该过程的代码如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 public class Student

2 {

3 private String name = null;

4

5 public Student(String name)

6 {

7 // TODO Auto-generated constructor stub

8 this.name = name;

9 }

10

11 public void setName(String name)

12 {

13 this.name = name;

14 }

15

16 private int calcADD(int a, int b)

17 {

18 return a + b;

19 }

20

21 public void fillBlank(int a, int b)

22 {

23 int result = calcADD(a, b);

24 System.out.println(name + "心算:" + a + " + " + b + " = " + result);

25 }

26 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

小明同学在填空(fillBalnk)的时候,直接心算(clacADD)了一下,得出结果是2,并将结果写在空格里。测试代码如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 public class Test

2 {

3 public static void main(String[] args)

4 {

5 int a = 1;

6 int b = 1;

7 Student s = new Student("小明");

8 s.fillBlank(a, b);

9 }

10 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

运行结果如下:

小明心算:1 + 1 = 2

该过程完全由Student类的实例对象单独完成,并未涉及回调机制。

第2章. 幼师的找茬

课间,幼师突发奇想在黑板上写了“168 + 291 = ”让小明完成,然后回办公室了。

花擦!为什么所有老师都跟小明过不去啊?明明超纲了好不好!这时候小明同学明显不能再像上面那样靠心算来完成了,正在懵逼的时候,班上的小红同学递过来一个只能计算加法的计算器(奸商啊)!!!!而小明同学恰好知道怎么用计算器,于是通过计算器计算得到结果并完成了填空。

计算器的代码为:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 public class Calculator

2 {

3 public int add(int a, int b)

4 {

5 return a + b;

6 }

7 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

修改Student类,添加使用计算器的方法:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 public class Student

2 {

3 private String name = null;

4

5 public Student(String name)

6 {

7 // TODO Auto-generated constructor stub

8 this.name = name;

9 }

10

11 public void setName(String name)

12 {

13 this.name = name;

14 }

15

16 @SuppressWarnings("unused")

17 private int calcADD(int a, int b)

18 {

19 return a + b;

20 }

21

22 private int useCalculator(int a, int b)

23 {

24 return new Calculator().add(a, b);

25 }

26

27 public void fillBlank(int a, int b)

28 {

29 int result = useCalculator(a, b);

30 System.out.println(name + "使用计算器:" + a + " + " + b + " = " + result);

31 }

32 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

测试代码如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 public class Test

2 {

3 public static void main(String[] args)

4 {

5 int a = 168;

6 int b = 291;

7 Student s = new Student("小明");

8 s.fillBlank(a, b);

9 }

10 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

运行结果如下:

小明使用计算器:168 + 291 = 459

该过程中仍未涉及到回调机制,但是部分小明的部分工作已经实现了转移,由计算器来协助实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值