`

Dev-No.03 Java中回调函数的实现

阅读更多

 

1、Java的接口支持提供了一种获得回调的等价功能的机制。其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法,则可传递在某种事件发生时调用(即“回调”)。

如:老板(Boss)让工人(Worker)干完活告诉他干的情况如何。

 

public interface Event {
	public String happenedEvent();
} 

public class EventA implement Event {
	public String happenedEvent() {
		System.out.println(“发生了事件A”);
	}
}

public class EventB implements Event {
	public String happenedEvent() {
		System.out.println(“发生了事件B”);
	}
}
public class Worker {
	private String name;
	private Boss boss;
	private Event event;

	public Worker(String name, Event event) {
		this.name = name;
		this.event = event;
	

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setBoss(Boss boss) {
		this.boss = boss;
	}

	public Boss getBoss() {
		return boss;
	}

	public void setEvent(Event event) {
		this.event = event;
	}

	public Event getEvent() {
		return event;
	}

	public void doWork() {
		System.out.println(name + “ is doing the work!”);
		for(int i=0; i<10000; ++i) {
			int x = i;
		}
		System.out.println(name + “ finished the work, please send the message to his boss”);
		boss.getWorkEvent(this, event);
	}
}

public class Boss {
	private String name;

	public Boss(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
}

public void getHappenedEvent(Worker worker, Event event) {
	System.out.println(“老板接收到的信息:” + worker.getName() + “ :” + event.happenedEvent());
}

public class TestCallBack {
	public static void main(String args[]) {
		Boss boss = new Boss(“老板”);
		Worker w1 = new Worker(“张三”);
		Worker w2 = new Worker(“李四”);
		
		Event e1 = new EventA();
		Event e2 = new EventB();

		w1.setEvent(e1);
		w2.setEvent(e2);

		w1.doWork();
		w2.doWork();
	}
}
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics