Java Events: это хороший способ сделать это? - PullRequest
0 голосов
/ 16 января 2009

Я переопределяю .Net API в Java, и API определяет целую кучу событий, что неявно не поддерживает Java.

Я собираюсь использовать шаблон наблюдателя, но из-за количества событий я действительно не хочу загромождать интерфейс.

Мне было интересно, было ли хорошей идеей объявить класс "Event", у которого есть метод подписки, который принимает "интерфейс EventHandler" и метод throw.

таким образом, я не захламляю свой родительский класс многочисленными списками подписчиков, потому что отдельные события обрабатывают их.

Единственная проблема, которую я вижу, - это аргументы команды throw, поскольку разные события могут иметь разные аргументы.

Решения, которые я придумала, - позволить методу throw принимать массив объектов или создать интерфейс, такой как IEventArguemnts, который можно передать команде throw и обработать кодом, подписавшимся на событие. чтобы иметь больше смысла для меня.

Буду признателен за любые предложения по улучшению этого. Или любые уточнения.

Ответы [ 2 ]

2 голосов
/ 16 января 2009

Java имеет события, а также поддержку API для событий. Проверьте пакет java.util. Вы увидите java.util.EventListener, java.util.EventObject и некоторые другие. Существуют также классы поддержки для обслуживания подписчиков и т. Д. API-интерфейсы AWT и Swing, например, в значительной степени основаны на событиях.

Обычно методы addXxxListener(XxxListener l) (то есть методы подписки) идут на класс, который запускает события, а не на сам класс события. Событие - это сообщение, и оно отправляется от издателя к подписчику.

0 голосов
/ 16 января 2009

Почему бы просто не использовать модель событий JavaBeans? Если все объекты работают в одной и той же JVM, это будет нормально работать.

Питер Коад высказал некоторые мысли по поводу улучшения модели Java Observer. Возможно, вы найдете это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...