Могу ли я использовать шину событий для развязки всех слоев приложения? Я пытаюсь использовать чистую архитектуру. Обычно развязка осуществляется границами интерфейсов, я видел несколько примеров, использующих для этого наблюдателей RX. Вопрос в том, могу ли я использовать Event Bus для развязки слоев? и может ли шина событий обрабатывать такую работу?Отменить приложение Android с помощью шины событий
ответ
Event Bus идеально подходит для сквозных действий, поэтому вам не нужно проходить через средний слой, чтобы доставить событие, если вам это не нужно.
Для чистой/луковой/многослойной архитектуры вам не нужна Event Bus, но ясные контракты между уровнями, то есть граничными интерфейсами. Они могут или не могут использовать RX.
Вы можете полностью развязать модули, используя на автобусе событий без каких-либо интерфейсов, а затем все компоненты будут крайне развязаны, однако это будет ад, чтобы отлаживать, поддерживать и супер трудно делать что-либо значимое :) Итак, какой-то контракт всегда является хорошей идеей даже при использовании Event Bus.
Комбинируя реактивное программирование и шину событий, вы можете создавать высокоуровневые управляемые событиями службы pico, ограниченные некоторыми контрактами вокруг вашей шины событий, чтобы улучшить ясность потока событий/команд/данных.
Я лично использую и работаю на RxHub, который родился именно из-за необходимости прохождения сквозных событий и простого обмена данными по потоку данных.