Java, Шаблон разработки: Несколько источников события и Один обработчик событий

Я хочу реализовать дизайн в Java, где у меня есть несколько источников события (Потоки). Такой источник события выполняет определенную задачу и должен был уведомить уникальный Обработчик событий (Класс), и этот должен выполнить другие задачи согласно уведомлениям об источниках события.

Мой вопрос: как реализовать этот desiqn соответствующим способом в Java? Существует шаблон разработки, подобный этому дизайну?

Заранее спасибо :).

7
задан Zakaria 4 June 2010 в 16:43
поделиться

4 ответа

Думаю, вы ищете шаблон Наблюдатель . У 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();
 }
}
3
ответ дан 7 December 2019 в 16:39
поделиться

Для меня это похоже на образец актера. Каждый поток действует как актер, выполняя одну единственную задачу. Результат помещается в очередь (да) для обработки следующим субъектом.

Однако у меня нет опыта работы с фреймворками java-актеров. Проконсультируйтесь по этому поводу в Google.

0
ответ дан 7 December 2019 в 16:39
поделиться

В GWT это называется шиной событий . Либо GWT. HandlerManager или GWTx. PropertyChangeSupport - это реализации, рекомендованные Google. Последний доступен в J2SE, начиная с версии 1.4.2

.
0
ответ дан 7 December 2019 в 16:39
поделиться

Возможно, я не понимаю ваш вопрос, но я думаю, что вам не нужен какой-либо шаблон проектирования, а что-то из пакет java.util.concurrent .

ThreadPoolExecutor?

0
ответ дан 7 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: