回调概念
举个栗子:诸葛亮派遣赵云保护刘备去东吴迎娶白富美,并嘱咐赵云到了后必须打开锦囊使用妙计。这个例子中诸葛亮不知道赵云啥时候能到东吴但知道到了之后需要执行锦囊妙计~
示例类图
示例代码
定义一个回调接口(使用锦囊妙计)
package com.callBack;
/**
* User: huangpeng
* DateTime: 2017/10/8 10:16
* SimpleDes: 定义回调接口
*/
public interface CallBack {
void useStrategy(String msg);
}
定义一个军师类
package com.callBack;
/**
* User: huangpeng
* DateTime: 2017/10/8 10:18
* SimpleDes: 诸葛亮
*/
public class ZhuGeLiang implements CallBack {
public void dispatch(General general) {
System.out.println("1.派大将保护主公去东吴");
general.protectBoss(this); //传递自己给调用者
}
public void useStrategy(String msg) {
System.out.println("2.收到大将消息:" + msg);
System.out.println("3.ok 第一步参见吴国太");
}
}
定义一个将领接口(保护老大)
package com.callBack;
/**
* User: huangpeng
* DateTime: 2017/10/8 10:47
* SimpleDes: 将领接口
*/
public interface General {
void protectBoss(CallBack callBack);
}
定义一个大将类
package com.callBack;
/**
* User: huangpeng311
* DateTime: 2017/10/8 10:17
* SimpleDes: 赵云
*/
public class ZhaoYun implements General {
public void protectBoss(CallBack zhuGeLiang) {
zhuGeLiang.useStrategy("(赵云)我和主公已到达东吴,请指示!"); //赵云到达后回调通知诸葛亮使用策略
}
}
来一个测试类
package com.callBack;
/**
* User: huangpeng
* DateTime: 2017/10/8 10:32
* SimpleDes: 测试类
*/
public class TestCallBack {
public static void main(String[] args) {
General general = new ZhaoYun(); //赵云将军
ZhuGeLiang zhuGeLiang = new ZhuGeLiang(); //拥有妙计的孔明
zhuGeLiang.dispatch(general); //孔明派遣将军
}
}
输出
1.派大将保护主公去东吴
2.收到大将消息:(赵云)我和主公已到达东吴,请指示!
3.ok 第一步参见吴国太