EventBus / PubSub与(反应性扩展)RX在单线程应用程序中的代码清晰度有关

问题描述 投票:38回答:4

[目前,我正在使用带有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与publish-subscribe pattern相关。

但是!

最近,我拿了Reactive course by Coursera并开始怀疑使用RXJava代替EventBus是否会在单线程应用程序中进一步简化事件处理代码?

我想问一下使用这两种技术进行编程的人们的经验(某种事件总线库 reactive extensions(RX)的某种形式):使用RX处理事件处理复杂性是否更容易?比使用事件总线体系结构鉴于不需要使用多个线程

[我问这个问题是因为我在Reactive Lectures on Coursera中听说,RX导致比使用观察者模式更干净的代码(即没有“回调地狱”),但是我发现EventBus架构之间没有任何比较与RXJava。因此很明显,EventBus和RXJava都比观察者模式更好,但是在单线程应用程序中更好]在代码清晰性和可维护性方面?

[如果我正确理解,RXJava的主要卖点是,如果存在阻塞操作(例如,等待服务器的响应),它可以用于生成响应式应用程序。

但是我根本不关心异步性,我所关心的只是在单线程应用程序

中保持代码整洁,整齐并易于推理。

在那种情况下,使用RXJava还是比EventBus更好?

[我认为EventBus将是一个更简单,更清洁的解决方案,并且我看不出为什么我应该在单线程应用程序]中使用RXJava来支持简单的EventBus体系结构的任何原因。

但是我可能错了!

如果我错了,请纠正我,并解释为什么在单线程应用程序中没有执行阻塞操作的情况下,RXJava比简单的EventBus更好。

[当前,我正在使用带有Scala(和JavaFX)的EventBus / PubSub体系结构/模式来实现一个简单的便笺组织应用程序(有点像Evernote客户端,并带有一些附加的思维导图...

event-handling system.reactive reactive-programming event-bus rx-java
4个回答
30
投票

以下是我在单线程同步

应用程序中使用反应式事件流的好处。

5
投票

我认为您必须使用rxjava,因为它提供了更多的灵活性。如果您需要公交车,可以使用这样的枚举:


1
投票

根据我上面的评论,JavaFx具有一个类ObservableValue,其类别与RX Observable相对应(更确切地说,可能为ConnectableObservable,因为它允许多个订阅)。我使用以下隐式类将RX转换为JFX,如下所示:


1
投票

[自两年前我问这个问题以来,我学到了一两件事,这是我目前的理解(如斯蒂芬的FRP book中所述:]]

两者都试图帮助描述状态机,即描述程序的状态如何响应事件而改变。

© www.soinside.com 2019 - 2024. All rights reserved.