Задать вопрос

Qt => Java. Сигналы и слоты

Новичок в Java, поэтому интересует вопрос: как можно обмениваться информацией между объектами разных классов в Java аналогично сигналам и слотам из Qt? Предполагаю, как вариант можно наследоваться от одного кастомного класса который бы реализовывал подобный функционал, но как мне кажется это не слишком удачный вариант… Что можете подсказать?
  • Вопрос задан
  • 5085 просмотров
Подписаться 7 Оценить Комментировать
Решения вопроса 1
@mayorovp
То, что вам нужно, называется «паттерн „Наблюдатель“». Сигналы в Qt — это всего лишь одна из реализаций данного паттерна.

Стандартным для Java способом реализации является такой:
1. Создается интерфейс для наблюдателя (слота в терминологии Qt) с нужными методами
2. Для наблюдаемого класса создаются методы подписки (connect в Qt), отказа от подписки и вызова.

Соглашение об именовании:
Допустим, сигнал называется Foo
Тогда интерфейс будет называться FooListener, у него будет метод foo
Метод подписки будет называться addFooListener, метод отписки — removeFooListener, метод вызова — fireFooListeners (последний должен быть protected).

Да, получается больше кода, чем в Qt. Но таково идеология Java
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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