舉個栗子:諸葛亮派遣趙雲保護劉備去東吳迎娶白富美,並囑咐趙雲到了後必須打開錦囊使用妙計。這個例子中諸葛亮不知道趙雲啥時候能到東吳但知道到了以後須要執行錦囊妙計~測試
定義一個回調接口(使用錦囊妙計)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 第一步參見吳國太