Решились на работе поддержать Delphi сообщество и начать выкладывать в open
source собственные наработки.
Первой ласточкой суждено было стать пакету DelphiEventBus - реализация паттерна проектирования
Event Bus.
В Jаva мире есть такие пакеты как guava-libraries, но
в Delphi ничего похожего найти не удалось. Потому решено было запилить нечто
подобное.
Из статьи Java event bus library comparison можно
выцепить характеристики библиотек реализующих шину сообщений.
Для DelphiEventBus получается следующие:
- Объявление слушателя -
аннотация
- Синхронность отправки в шину -
по умолчанию отправка синхронна.
- Асинхронность - в планах на будующее
- Фильтрация событий -
статическая, т.е. у обработчиков в листенера можно задать декларативно
фильтры и их значения. При посылки события задаются значения предопределенных
фильтров для конкретного события
- Иерархия событий - да. Событие
это объект. Есть базовый класс всех событий. Обработчик может ждать
события определенного класса и всех его наследников
- Строгость ссылочности листенера
- строгая. Обязательная дерегистрация. Регистрируются и дерегистрируются
сразу все обработчики в листенере
- Приоритет обработчиков -
отсутствует. Но дополнительно реализован механизм хуков, похожий на
виндовый механизм.
- Реализованы хуки - возможность
игнорировать фильтры и выстраивать цепочки обработки. Вызов хуков строго
обратен порядку регистрации.
Должно работать на XE3 и выше. Еще бы readme перевести на английский...
Комментариев нет:
Отправить комментарий