В настоящее время я использую архитектуру/паттерн EventBus/PubSub с Scala (и JavaFX) для реализации простого приложения для организации заметок (например, вроде как клиент Evernote с некоторыми дополнительными функциями отображения разума), и я должен сказать, что мне действительно нравится EventBus над шаблоном наблюдателя.
Вот некоторые библиотеки EventBus:
https://code.google.com/p/guava-libraries/wiki/EventBusExplained
http://eventbus.org (в настоящее время кажется, что он не работает), это тот, который я использую в своей реализации.
http://greenrobot.github.io/EventBus/
Вот сравнение библиотек EventBus: http://codeblock.engio.net/37/
EventBus связан с шаблоном публикации-подписки.
Однако!
Недавно я принял реактивный курс Coursera и начал задаваться вопросом, использует ли RXJava вместо EventBus упростит код обработки событий еще больше в приложении однопоточное?
Я хотел бы спросить об опыте людей, которые запрограммировали использование обеих технологий (какая-то библиотека eventbus и какая-то форма реактивные расширения (RX)): было ли проще справляться с сложностью обработки событий с использованием RX, чем с архитектурой шины событий , учитывая, что не нужно было использовать несколько потоков?
Я спрашиваю об этом, потому что я слышал в Reactive Lectures on Coursera, что RX приводит к значительно более чистому коду, чем к использованию шаблона наблюдателя (т.е. нет "обратного ада" ), однако я не нашел никакого сравнения между архитектурой EventBus и RXJava. Таким образом, ясно, что и EventBus, и RXJava лучше, чем шаблон наблюдателя, но , что лучше в однопоточных приложениях с точки зрения ясности кода и ремонтопригодности?
Если я правильно понимаю, что главная точка продажи RXJava заключается в том, что его можно использовать для создания чувствительных приложений, если есть операции блокировки ( например, ожидание ответа с сервера).
Но меня вообще не интересует асихотрофия, все, о чем я забочусь, это держать код в чистоте, распущенном и легко рассуждать в однопоточном приложении.
В этом случае, лучше ли использовать RXJava, чем EventBus?
Я думаю, что EventBus будет более простым и чистым решением, и я не вижу причин, по которым я должен использовать RXJava для однопоточного приложения в пользу простой архитектуры EventBus.
Но я могу ошибаться!
Пожалуйста, исправьте меня, если я ошибаюсь и объясню, почему RXJava будет лучше, чем простой EventBus в случае однопоточного приложения, где не выполняются операции блокировки.