接口回调

2022-04-05  本文已影响0人  lucas777
/**
 *    老方   :   黑马的CEO                                       想公司的战略,,也数钱           class    A
 * 
 *    华哥   :   黑马android部门的负责人                  讲课,排课表                           class   B
 *    
 *    老方   :   拿起电话问:泽华,,,,明天29期讲什么课程。。。
 *   
 *    华哥   :    想了很久。。。。没有想起来,明天是什么课程。。。。。
 *    
 *    老方   :   那你看看课表,明天29期是什么课程
 *    
 *    华哥    :  我这会特别忙。。。没空搭理你。。。。。
 *    
 *    老方   :   在电话里面说。。那行吧,那你 忙完了,一会在打电话告诉我。。
 *    
 *    华哥    : 忙了很长久,,终于忙完了。。。。在拿起电话回复老方,,这个回复的方法就是回调。
 */

/**
 * 
 * 什么是回调:
 * 
 * 回调就是2个类之间进行交互。
 * 
 * class A 方法D
 * 
 * class B 方法C
 * 
 * classA 想去调用classB里面的C方法。
 * 
 * 结果 成了,calssB 去调用classA 里面的D方法
 */
public class Main {

    public static void main(String[] args) {

        HuaGe huaGe = new HuaGe();

        LaoFang laoFang = new LaoFang(huaGe);

        laoFang.ask("明天29期是什么课程");

    }

}
/**
 * 这个是回调接口
 * 
 * @author Administrator
 * 
 */
public interface CallBack {
    /**
     * 
     这个是回调方法
     */
    void result(String msg);
}
public class HuaGe implements CallBack {

    @Override
    public void result(String msg) {

    }

    /**
     * 
     这个是Class B 里面的C方法
     */
    public void message(CallBack laoFang, String msg) {
        System.out.println("这个是老方问华哥的问题" + msg);

        for (int i = 0; i < 10000; i++) {

        }
        System.out.println("华哥这个会想一下,明天29期是什么课程,想完之后也不知道什么课程");
        buzy();

        for (int i = 0; i < 10000; i++) {

        }
        System.out.println("华哥忙ing");
        String result = "明天29期是,项目实战课程";
        /*
         * 结果却成了class b 返过来调用了class A里面的D方法
         */
        laoFang.result(result);
    }

    private void buzy() {
        System.out.println("老方说,泽华,我现在很忙,那你一会,把课表看一下,在打电话告诉我,明天是什么课程");
    }

}
public class LaoFang implements CallBack {
    private HuaGe huaGe;

    public LaoFang(HuaGe huaGe) {
        this.huaGe = huaGe;
    }

    /*
     * 这个方法就是传说中的回调方法
     */
    @Override
    public void result(String msg) {
        System.out.println("华哥拿起电话告诉老方:" + msg);
    }

    /**
     * 
     class A 去华哥 老方通过这个方法去问华哥,msg
     */
    public void ask(String msg) {
        huaGe.message(LaoFang.this, msg);
    }

}

上一篇下一篇

猜你喜欢

热点阅读