什么是回调函数?
先上代码:
public class ClassA {
public MyCallInterface mc;
public void setCallFunc(MyCallInterface mc) {
this.mc = mc;
}
public void m1() {
System.out.println("----调用 ClassA----m1()------");
this.mc.method();
}
}
public interface MyCallInterface {
void method();
}
public class ClassB implements MyCallInterface {
@Override
public void method() {
System.out.println("------回调-----ClassB---method()-----");
}
}
想要在调用 ClassA#m1() 方法时回调下 ClassB#method() 方法,使用回调函数的方法实现步骤如下:
先定义一个接口 MyCallInterface,定义 这个 method 方法
在实现类ClassB 中实现 接口中的 method() 方法。
在 ClassA 类中 添加接口类型的 成员变量, 在 ClassA#m1() 方法中通过 这个接口类型的成员变量即可对调用 实现类 ClassB 中的method() 方法。
这样做的优点是什么?
使用接口类型的成员变量去调用方法,这样可以根据 接口不同的实现类中 method() 实现不同 执行不同的业务逻辑,从而达到解耦,易于扩展的目的。同时将 需要根据情况变化的代码放在 method() 中