[目前,我正在使用带有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客户端,并带有一些附加的思维导图...
以下是我在单线程同步
应用程序中使用反应式事件流的好处。我认为您必须使用rxjava,因为它提供了更多的灵活性。如果您需要公交车,可以使用这样的枚举:
根据我上面的评论,JavaFx具有一个类ObservableValue,其类别与RX Observable
相对应(更确切地说,可能为ConnectableObservable
,因为它允许多个订阅)。我使用以下隐式类将RX转换为JFX,如下所示:
[自两年前我问这个问题以来,我学到了一两件事,这是我目前的理解(如斯蒂芬的FRP book中所述:]]
两者都试图帮助描述状态机,即描述程序的状态如何响应事件而改变。