Java 接口回调

2016-09-11  本文已影响207人  英勇青铜5

个人理解:
一个类A中的方法1调用类B中的方法2,类B中的方法2调用类A中的方法3

模拟这样一个场景:
员工A完成星期一到星期五的工作量后,打电话给出差在外的老板,老板进行了工作量的验收,老板觉得合格,就给员工发工资,再发给员工一个通知,通知员工查看银行卡


首先,一个发工资的接口,可以看作是老板给员工发通知的通知器

public interface PayoffListener {
    void checkCard();
}

接着是出差在外的老板

public class Boss {
    public void accept(int i, PayoffListener payoffListener) {
        if(i == 5 && payoffListener != null ){//验收是否完成5天  接口引用不为空 
            System.out.println("老板---->工资已发,注意查收");
            payoffListener.checkCard();//通知员工
        }
    }
}

在公司工作的持有通知器的员工,员工想要得到工资,肯定得持有老板这个对象,否则找谁要工资

public class Employee implements PayoffListener {
    private Boss boss;
    private int num = 0;

    public Employee(Boss boss) {
        this.boss = boss;
    }

    public void work(int i) {
        for (int y = 1; y <= i; y++) {
            num++;
            System.out.println("第" + y + "天工作干完了");
        }
    }

    /**
     * 打电话给老板
     */
    public void callBossForMoney() {
        boss.accept(num, this);
    }

    /**
     * 查看银行卡
     */
    @Override
    public void checkCard() {
            System.out.println("员工---->工资到银行卡了");
    }
}

进行测试:

public class CallbackDemo {
    public static void main(String[] args) {
        Boss boss = new Boss();
        Employee employee = new Employee(boss);
        employee.work(5);

        employee.callBossForMoney();
    }
}

运行结果:

第1天工作干完了
第2天工作干完了
第3天工作干完了
第4天工作干完了
第5天工作干完了
老板---->工资已发,注意查收
员工---->工资到银行卡了

想的这个场景也不晓得恰当不恰当。理解的比较浅显,深入的以后再继续学习

本人很菜,有错误请指出

共勉 : )

上一篇下一篇

猜你喜欢

热点阅读