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天工作干完了
老板---->工资已发,注意查收
员工---->工资到银行卡了
想的这个场景也不晓得恰当不恰当。理解的比较浅显,深入的以后再继续学习
本人很菜,有错误请指出
共勉 : )