zoukankan      html  css  js  c++  java
  • JAVA回调

    回调概念

    举个栗子:诸葛亮派遣赵云保护刘备去东吴迎娶白富美,并嘱咐赵云到了后必须打开锦囊使用妙计。这个例子中诸葛亮不知道赵云啥时候能到东吴但知道到了之后需要执行锦囊妙计~

    示例类图

    示例代码

    定义一个回调接口(使用锦囊妙计)

    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 第一步参见吴国太
    
  • 相关阅读:
    SOJ 3531_Number Pyramids
    TYVJ P1047 乘积最大 Label:dp
    TYVJ P1067 合唱队形 Label:上升子序列?
    TYVJ P1093 验证数独 Label:none
    TYVJ P1088 treat Label:鞭笞人的DP
    TYVJ P1008 传球游戏
    表达式系列问题
    数字三角形系列 系列问题
    TYVJ P1024 外星人的密码数字
    TYVJ P1056 能量项链 Label:环状区间DP
  • 原文地址:https://www.cnblogs.com/huangpeng1990/p/7642437.html
Copyright © 2011-2022 走看看