EventBus / PubSub vs (reaktive Erweiterungen) RX hinsichtlich der Code-Klarheit in einer Anwendung mit einem Thread

Zur Zeit benutze ich einen EventBus /PubSub Architektur / Muster mit Scala (und JavaFX) zur Implementierung einer einfachen Notiz-Organisations-App (ähnlich einem Evernote-Client mit zusätzlichen Mind-Mapping-Funktionen) und ich muss sagen, dass ich EventBus über das Beobachtermuster wirklich mag.

Hier sind einige EventBus-Bibliotheken:

https://code.google.com/p/guava-libraries/wiki/EventBusExplained

http://eventbus.org (scheint derzeit nicht verfügbar zu sein) Dies ist die, die ich in meiner Implementierung verwende.

http://greenrobot.github.io/EventBus/

Hier ist ein Vergleich der EventBus-Bibliotheken:http://codeblock.engio.net/37/

EventBus ist verwandt mit demPublish-Subscribe-Muster.

Jedoch !

Vor kurzem habe ich dieReaktivkurs von Coursera und begann sich zu fragen, ob mitRXJava Anstelle von EventBus würde sich der Event-Handling-Code in a noch weiter vereinfacheneinfädig Bewerbung?

Ich möchte nach den Erfahrungen von Leuten fragen, die mit beiden Technologien programmiert haben (eine Art Eventbus - Bibliothek)und irgendeine Form derreaktive Erweiterungen (RX)): War es einfacher, die Komplexität der Ereignisbehandlung mit RX zu bewältigen, als mit einer Ereignisbusarchitekturvorausgesetzt, es war nicht nötig, mehrere Threads zu verwenden ?

Ich frage das, weil ich im gehört habeReaktive Vorlesungen über Coursera DasRX führt zu einem viel saubereren Code als die Verwendung des Beobachtermusters (d. h. es gibt keine "Rückruf-Hölle"), jedoch habe ich keinen Vergleich zwischen EventBus-Architektur undRXJava. Es ist also klar, dass sowohl EventBus als auch RXJava aber besser als das Beobachtermuster sindDas ist besser in Anwendungen mit einem einzigen Thread in Bezug auf Code-Klarheit und Wartbarkeit?

Wenn ich das Hauptverkaufsargument von richtig versteheRXJava ist, dass es verwendet werden kann, um reagierende Anwendungen zu erzeugen, wenn blockierende Vorgänge vorliegen (z. B. Warten auf die Antwort von einem Server).

Aber Asychronizität interessiert mich überhaupt nicht, alles, was mich interessiert, ist, den Code sauber zu halten, zu entwirren und einfach in einem zu argumentierenSingle-Threaded-Anwendung.

Ist es in diesem Fall immer noch besser, RXJava als EventBus zu verwenden?

Ich denke, EventBus wäre eine einfachere und sauberere Lösung und ich sehe keinen Grund, warum ich RXJava für eine verwenden sollteSingle-Threaded-Anwendung zugunsten einer einfachen EventBus-Architektur.

Aber ich könnte mich irren!

Bitte korrigieren Sie mich, wenn ich falsch liege und erklären Sie mir, warum RXJava im Falle eines Fehlers besser ist als ein einfacher EventBusSingle-Threaded-Anwendung wo keine Sperrvorgänge durchgeführt werden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage