问题现象
封装一个通用的commonEvent工具类:希望在创建订阅者的同时注册一个自定义的回调函数,然后在收到事件通知的同时能调用这个自定义的回调函数。
问题现象
封装一个通用的commonEvent工具类:希望在创建订阅者的同时注册一个自定义的回调函数,然后在收到事件通知的同时能调用这个自定义的回调函数。
在Java中,你可以通过创建一个通用的CommonEvent
工具类来实现这个需求。这个类可以包含一个用于注册回调函数的公共方法,以及一个用于触发事件的方法。
以下是一个简单的示例:
import java.util.HashMap;
import java.util.Map;
public class CommonEvent {
// 存储订阅者和他们对应的回调函数
private Map<Object, Runnable> subscribers = new HashMap<>();
// 注册订阅者,并关联一个回调函数
public void register(Object subscriber, Runnable callback) {
subscribers.put(subscriber, callback);
}
// 触发事件,并执行关联的回调函数
public void trigger(Object... data) {
for (Map.Entry<Object, Runnable> entry : subscribers.entrySet()) {
entry.getValue().run();
}
}
}
在这个示例中,CommonEvent
类使用了一个Map
来存储订阅者和他们对应的回调函数。register
方法用于注册一个新的订阅者和他们的回调函数,而trigger
方法则用于触发事件并执行所有关联的回调函数。
你可以像下面这样使用这个工具类:
public class Main {
public static void main(String[] args) {
CommonEvent event = new CommonEvent();
event.register(new Object() {
@Override
public String toString() {
return "Subscriber1";
}
}, () -> System.out.println("Event triggered for Subscriber1"));
event.register(new Object() {
@Override
public String toString() {
return "Subscriber2";
}
}, () -> System.out.println("Event triggered for Subscriber2"));
event.trigger(); // 触发事件,输出:Event triggered for Subscriber1 和 Event triggered for Subscriber2
}
}
1 回答432 阅读
394 阅读
1 回答344 阅读✓ 已解决
388 阅读
306 阅读
340 阅读
354 阅读
示例代码
参考链接
公共事件模块