回调模式
程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。
总结:A类调用B类中的a方法
生活中的例子
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
UML 类图
创建回调接口
- CallInterface.java
/**
* 回调接口
* @author LingDu
*/
public interface CallInterface {
public void printName();
}
创建回调者
用于调用回调函数的类
- Caller.java
/**
* 回调者,用于调用回调函数的类
* @author LingDu
*/
public class Caller {
private CallInterface callInterface;
public void setCall(CallInterface callInterface){
this.callInterface = callInterface;
}
public void call(){
System.out.println("start....");
callInterface.printName();
System.out.println("end....");
}
}
回调测试
public static void main(String[] args) {
Caller caller = new Caller();
caller.setCall(new CallInterface() {
@Override
public void printName() {
System.out.println("Client : printName()");
}
});
caller.call();
}
应用场景
- Thread就是回调者,Runnable就是一个回调接口。
new Thread(new Runnable(){
@Override
public void run() {
System.out.println("回调一个新线程!");
}}).start();