我想在Java中实现一个具有多个事件源(线程)的设计。这样的事件源必须完成一项特定的任务,并且必须通知唯一的事件处理程序(类),而这个事件源必须根据事件源的通知来完成其他任务。
我的问题是:如何在Java中以适当的方式实现此设计?
有与该设计类似的设计模式吗?
先感谢您 :)。
最佳答案
我认为您正在寻找Observer模式。 Java确实有一些标准接口(interface)(java.util.Observer,java.util.Observable),尽管它们不是特定于类型的。因此,如果该域似乎需要它,您可以考虑自己使用。
class MyThread implements Runnable {
Observable observable;
public MyThread(EventHandler observer) {
observable = new Observable();
observable.addObserver(observer);
}
public void run() {
while (!done()) {
Object result = doStuff();
observable.notifyObservers(result);
}
}
}
// might have this be singleton
class EventHandler implements Observer {
public synchronized void update(Observable o, Object arg) {
accomplishOtherTask();
}
}