举个栗子:诸葛亮派遣赵云保护刘备去东吴迎娶白富美,并嘱咐赵云到了后必须打开锦囊使用妙计。这个例子中诸葛亮不知道赵云啥时候能到东吴但知道到了以后须要执行锦囊妙计~测试
定义一个回调接口(使用锦囊妙计)this
package com.callBack; /** * User: huangpeng * DateTime: 2017/10/8 10:16 * SimpleDes: 定义回调接口 */ public interface CallBack { void useStrategy(String msg); }
定义一个军师类spa
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 第一步参见吴国太"); } }
定义一个将领接口(保护老大)code
package com.callBack; /** * User: huangpeng * DateTime: 2017/10/8 10:47 * SimpleDes: 将领接口 */ public interface General { void protectBoss(CallBack callBack); }
定义一个大将类blog
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); //孔明派遣将军 } }
输出class
1.派大将保护主公去东吴 2.收到大将消息:(赵云)我和主公已到达东吴,请指示! 3.ok 第一步参见吴国太