Callback 回调机制
Java中没有c/c++中函数指针的概念,而回调操作(callback)通过接口进行实现!作为对比,面向对象的小兄弟 —- C#通过委托(delegate)完成对于方法的调用,同时委托是面向对象且是类型安全的!
今天我们着重来讲Java中的回调机制,这在GUI编程等基于事件的编程框架得到广泛的应用!
回调的应用场景:
Boss不像一直监视员工的工作进程,对员工说,你工作做完了给我报告一下!
实例代码
1.WorkObserver.java
package com.kanbujian.callback;
//定义接口,定义回调函数
public interface WorkObserver {
public void WorkFinished();
}
2.Boss.java
package com.kanbujian.callback;
/**
* 定义一个类,实现接口,实现回调函数
* @author QT
*
*/
public class Boss implements WorkObserver {
private String name;
public Boss(String name) {
this.name=name;
}
@Override
public void WorkFinished() {
System.out.println(name+" 已经知道工作已经完成了");
}
}
3.Employee.java
package com.kanbujian.callback;
public class Employee {
/**
* 定义一个接口对象,
*/
private WorkObserver myBoss;
/**
* 传入实现接口的对象的类的实例,也就是boss
* @param boss
*/
public Employee(Boss boss) {
this.myBoss=boss;
}
public void work(){
for(int i=0;i<100;i+=10){
System.out.println("i----"+i);
}
finishMyWork();
}
/**
* 此时Employee含有Boss的引用,可以实现回调,工作完成时通知boss
*/
public void finishMyWork(){
myBoss.WorkFinished();
}
}
4.CallBackDemo.java
package com.kanbujian.callback;
public class CallBackDemo {
public static void main(String[] args) {
Employee employee=new Employee(new Boss("Gates"));
employee.work();;
}
}
5.运行结果