Java,设计模式:多个事件源和一个事件处理程序

Zak*_*ria 7 java multithreading design-patterns event-handling

我想在Java中实现一个设计,我有多个事件源(Threads).此类事件源完成特定任务并且必须通知唯一的事件处理程序(类),并且此事件必须根据事件源通知完成其他任务.

我的问题是:如何在Java中以适当的方式实现这个设计?有一种类似于这种设计的设计模式吗?

先感谢您 :).

Jus*_*tin 3

我认为您正在寻找观察者模式。Java 确实有一些标准接口(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();
 }
}
Run Code Online (Sandbox Code Playgroud)