我想在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();
 }
}

09-30 13:34
查看更多