理解Java接口回调

初步认识:

实现步骤:

1、创建一个回调接口。

2、创建一个回调对象实现回调接口。

3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法。

代码示例:

实例:Boss通知员工做事情,员工完成任务之后告诉Boss完成情况。

说明:Callback:回调接口。Boss:回调对象。Employee:控制器对象。

1、创建一个回调接口

public interface Callback {
	public void yes();
	public void no();
}

2、创建一个回调对象实现回调接口 

//  Boss需要实现回调的接口
public class Boss implements Callback{
//	传入一个员工对象
	private Employee employee;
	public Boss(Employee employee) {
		this.employee = employee;
	}
	
//	告诉员工要做什么事情
	public void doEvent(String event) {
		System.out.println("Boss:"+event);
//      将当前对象传给员工,员工才可以回调
		employee.doSomething(this, event);
	}
	
//	员工完成事情后回调的方法
	@Override
	public void yes() {
		System.out.println("Boss:任务完成得很不错,下个月给你涨工资");
	}
	@Override
	public void no() {
		System.out.println("Boss:任务没完成,好好反思一下");
	}
	
}

 3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法

public class Employee {
	public Employee(){}

//	完成boss交代的事情,回调接口作为参数穿过来
	public void 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、测试:

public class Test {
	public static void main(String[] args) {
		Employee employee=new Employee();
		Boss boss = new Boss(employee);
		boss.doEvent("写hello world!");
	}
}

结果:

猜你喜欢

转载自blog.csdn.net/qq_41630866/article/details/88015833