Ich würde Ihre Frage ändern und sagen: Wenn eine ereignisbasierte nicht die richtige Lösung für eine objektorientierte Anwendung ist? Ich denke, dass die meisten OO-Anwendungen davon profitieren können, wenn sie als Event-Produzenten und -Konsumenten konzipiert sind.
Am Ende ist ein "Methodenaufruf" tatsächlich eine Nachricht, die an einem Objekt ankommt, und das Objekt ist dafür verantwortlich, zu entscheiden, ob es etwas mit der Nachricht zu tun hat, und die Operation auszuführen. Dies ist in stark typisierten Sprachen wie Java nicht sehr klar, wird jedoch in dynamischen Sprachen wie Ruby deutlicher.
Ein weiterer interessanter Punkt beim Entwerfen einer Anwendung als ereignisbasiert ist, dass die internen Komponenten normalerweise ordnungsgemäß isoliert und kohärent sein müssen, da sonst der Code sehr, sehr schnell zu einem Chaos wird. Als Beispiel gefällt mir das von Alistair Cockburn verwendete Konzept der hexagonalen Architektur sehr gut , da dieses Muster normalerweise eine bessere Verkapselung erzeugt und (meiner Ansicht nach) kohäsivere Komponenten erzwingt.
Ich denke (aber ich liege wahrscheinlich falsch), dass dies auch mit dem Domain Driven Design-Konzept von Domain-Ereignissen zusammenhängt , bei dem die Domain-Klassen Ereignisse ausgeben, die von anderen Objekten erfasst werden, und diese Objekte noch andere Ereignisse ausgeben (Sie sehen, wo das geht: D). Was mir an diesem Muster gefällt, ist, dass Schnittstellen Rollen modellieren sollten, keine Implementierungen.
Es tut mir leid, wenn ich nicht viel Sinn mache. Ich habe in den letzten Monaten mit diesen Mustern experimentiert und dabei erstaunliche Ergebnisse erzielt, aber ich versuche immer noch, die Konzepte zu verstehen und zu verstehen, wie weit sie reichen.