本文试图使用Java面向对象思想解释回调函数机制,业务场景如下:
步骤一:领导老王分配工作给小王
步骤二:小王完成工作并让领导接受工作汇报 —(小王在完成工作的方法中调用领导老王接受工作汇报方法,这个接受工作汇报方法就是回调函数)
步骤三:领导听取小王工作汇报
public class Leader {
// 领导分配工作给员工
void assignWork(Employee employee){
System.out.println("领导分配工作给员工...");
employee.work(this);
}
// 领导听取工作汇报
void acceptReport(Employee employee){
// 听取汇报
employee.report();
}
}
public class Employee {
// 接收领导安排的工作
void work(Leader leader){
// 完成工作
System.out.println("员工完成工作...");
leader.acceptReport(this);// 让领导接收汇报,该函数即回调函数
}
// 汇报工作
void report(){
// 汇报工作
System.out.println("员工汇报工作...");
}
}
public class WorkTest {
public static void main(String[] args) {
Leader leader = new Leader();
Employee employee = new Employee();
leader.assignWork(employee);// 运行结果如下
}
}
简而言之:A类对象的方法a调用B类对象的方法b执行某些操作,在b执行过程中又会调用A类对象的方法c,这个A类对象的c方法即回调函数,即文中的acceptReport()方法
PS:文中若有不当之处,不吝赐教~