Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как соединить 2 класса событием.


Автор: FlakeMusic 28.10.2009, 10:35
Здравствуйте.

Есть класс контроллер, в нём содержится класс - модель. Мне из контроллера нужно слушать определённое событие, которое может произойти в модели. Куда смотреть?

Понимаю вопрос глупый, но я работал только со стандартными событиями, типа мышки.

Автор: a_n_d_y 28.10.2009, 12:08
Код

interface IEventListener {
  void onEvent(Model m);
}

class Model {
  private ArrayList<IEventListener> listeners = new  ArrayList<IEventListener>();

  public addEventListener(IEventListener l) {
    listeners.add(l);
  }

  public void methodToListen() {
    for (IEventListener l : listeners) {
      l.onEvent(this);
    }
  }
}

class Controller {
  public Controller(Model m) {
    m.add(new IEventListener() {
      void onEvent(Model m) {
        System.out.println("Here we are going to handle invokation of m. methodToListen()");
      }
    });
  }
}

Автор: ivanovpv 28.10.2009, 12:41
Цитата(FlakeMusic @  28.10.2009,  10:35 Найти цитируемый пост)
Мне из контроллера нужно слушать определённое событие, которое может произойти в модели. Куда смотреть?


Такие штуки решаются применением т.н. паттерна Listener, см. например http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/event_listener.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)