Является ли использование @annotations тегами методов прослушивателя, а не интерфейса с методами, хорошей идеей?

Во-первых, да - это субъективно.

Я заметил, что в последнее время несколько библиотек, похоже, используют методы прослушивателя let the user tag в каком-то классе в качестве слушателей, использующих разные аннотации для отметки различных событий. Infinispan и WELD приходят на ум как примеры этого подхода.

ЧТО Я НЕНАВИЖУ В ЭТОМ ШАБЛОНЕ

  • никакой безопасности типов
  • не нужно читать doco, чтобы узнать правильные сигнатуры типов для событий, а не просто реализовать.
  • для разработчика это очень беспорядочно, так как им нужно намного больше кода поддержки для обнаружения и проверки отправленного класса слушателя, удержания метода и его отправки и т. Д.
  • диспетчер отражения замедляет запуск событий. Конечно, можно было бы сгенерировать настоящий класс с помощью ASM, но опять же, это намного больше работы по сравнению с запуском простого слушателя. OnEvent ...

ВОЗМОЖНЫЕ ПРИЧИНЫ

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

МНЕНИЯ

Так зачем кому-то использовать этот подход? Лично я этого не понимаю, похоже, это требует больше работы для разработчика, усложняет жизнь пользователю, работает медленнее, так зачем его использовать?

6
задан Benjamin 6 November 2013 в 12:15
поделиться