初步认识:
实现步骤:
1、创建一个回调接口。
2、创建一个回调对象实现回调接口。
3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法。
代码示例:
实例:Boss通知员工做事情,员工完成任务之后告诉Boss完成情况。
说明:Callback:回调接口。Boss:回调对象。Employee:控制器对象。
1、创建一个回调接口
publicinterface Callback {publicvoid yes();publicvoid no();
}
2、创建一个回调对象实现回调接口
//Boss需要实现回调的接口publicclass Boss implements Callback{//传入一个员工对象
private Employee employee;publicBoss(Employee employee) {
this.employee=employee;
}//告诉员工要做什么事情publicvoid doEvent(String event) {
System.out.println("Boss:"+event);//将当前对象传给员工,员工才可以回调
employee.doSomething(this, event);
}//员工完成事情后回调的方法@Override
publicvoid yes() {
System.out.println("Boss:任务完成得很不错,下个月给你涨工资");
}@Override
publicvoid no() {
System.out.println("Boss:任务没完成,好好反思一下");
}
}
3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法
publicclass Employee {publicEmployee(){}//完成boss交代的事情,回调接口作为参数穿过来publicvoid doSomething(Callback callback, String event) {
String flag=null;
System.out.println("Employee:正在做:"+event);//根据完成情况通知Boss,即接口回调
System.out.println("Employee:完成了任务!");
flag="完成";if(flag.equals("完成")){
callback.yes();
}
System.out.println("Employee:未完成任务!");
flag="未完成";if(flag.equals("未完成")){
callback.no();
}
}
}
4、测试:
publicclass Test {public static void main(String[]args) {
Employee employee=new Employee();
Boss boss=new Boss(employee);
boss.doEvent("写hello world!");
}
}
结果:
原文链接:https://blog.csdn.net/qq_41630866/article/details/88015833?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control