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();
}
}
分享到:
相关推荐
Dev-Cpp.5.10.TDM-GCC.4.8.1.Setup
Dev-Cpp.6.7.5.MinGW-w64.GCC.10.3.Setup.exe
Dev-Cpp.5.10.TDM-GCC.4.8.1.Setup.exe
Typora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev....
一个能写c和 c++的小工具 不像vs那么大,个人感觉比vc++好用
gcc-ada-4.8.1-4-mingw32-dev.tar.lzma MinGW
java-1.8.0-openjdk
Dev-Cpp.5.11.TDM-GCC.4.9.2.安装程序。 调试工具 Insight工具是一款全功能的图形化用户接口的GNU调试工具,您可以使用这一工具对BCM模块设备的应用进行高效率的调试 丰富的系统软件 嵌入式实时操作系统 ...
Dev-Cpp.5.11.rar
Dev-Cpp.6.6.GCC.10.2.Setup.exe
python库。 资源全名:pyglet-2.0.dev6-py3-none-any.whl
glib-dev-2.12.11.zip glib-dev-2.12.11.zip glib-dev-2.12.11.zip
一个比较经典的DEV C++版本,方便初学者快速入门。对于该软件版本的代码详细调试步骤,可以参考我的博客,地址:https://blog.csdn.net/hz18790581821/article/details/78418648
资源分类:Python库 所属语言:Python 资源全名:python-dev-docker-project-0.1.9.dev0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
three.js-dev-examples-models.zip
java-1.8.0-openjdk
webpack-dev-server模块的使用 : webpack-dev-server-demo.zip
vue3_dev_tools.crx
统信系统UOS资源包389-ds-base-dev-1.4.0.21-1 资源列表: 389-ds-base-dev_1.4.0.21-1_mips64el.deb 389-ds-base-dev_1.4.0.21-1_i386.deb 389-ds-base-dev_1.4.0.21-1_arm64.deb 389-ds-base-dev_1.4.0.21-1_amd64...