目前,我正在使用带有 Scala(和 JavaFX)的 EventBus/ PubSub架构/模式来实现一个简单的笔记组织应用程序(有点像带有一些附加思维导图功能的 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 的 Reactive 课程,并开始怀疑使用RXJava代替 EventBus 是否会在单线程应用程序中进一步简化事件处理代码?
我想问一下使用这两种技术(某种事件总线库和某种形式的响应式扩展(RX))编程的人的经验:使用 RX 解决事件处理复杂性是否比使用给定的事件总线架构更容易没有必要使用多个线程?
我之所以这么问是因为我在 Coursera 上的反应式讲座中听说RX导致的代码比使用观察者模式更简洁(即没有“回调地狱”),但是我没有发现 EventBus 架构与RXJava之间的任何比较。所以很明显,EventBus 和 RXJava 都比观察者模式更好,但 在代码清晰度和可维护性方面哪个在单线程应用程序中更好?
如果我理解正确的话, RXJava的主要卖点是如果存在阻塞操作(例如等待服务器响应),它可以用来生成响应式应用程序。
但我根本不关心异步性,我关心的只是在单线程应用程序中保持代码干净、清晰且易于推理。
在这种情况下,使用 RXJava 是否比使用 EventBus 更好?
我认为 EventBus 将是一个更简单和更清洁的解决方案,我看不出有任何理由为什么我应该将 RXJava 用于单线程应用程序以支持简单的 EventBus 架构。
但我可能错了!
如果我错了,请纠正我,并解释为什么在没有执行阻塞操作的单线程应用程序的情况下,RXJava 会比简单的 EventBus 更好。