Vorrei cambiare la tua domanda e dire: quando un evento basato non è la soluzione giusta per un'applicazione orientata agli oggetti? Penso che la maggior parte delle applicazioni OO possa beneficiare se sono progettate come produttori di eventi e consumatori.
Alla fine, una "chiamata di metodo" è in realtà un messaggio che arriva a un oggetto e l'oggetto è responsabile per decidere se sta andando a fare qualcosa con il messaggio ed eseguire l'operazione. Questo non è molto chiaro in linguaggi strongmente tipizzati come Java, ma diventa più ovvio in linguaggi dinamici come Ruby.
Un altro aspetto interessante della progettazione di un'applicazione basata su eventi è che di solito i componenti interni devono essere correttamente isolati e coerenti, altrimenti il codice diventa un disastro molto, molto rapidamente. Ad esempio, mi piace molto il concetto di Hexagonal Architecture usato da Alistair Cockburn, come di solito questo modello crea un incapsulamento migliore e forze (a mio avviso) più componenti coesive.
Penso (ma probabilmente ho torto) che questo è anche legato al concetto di Domain Driven Design di Domain Events , in cui le classi di dominio emettono eventi catturati da altri oggetti, e questi oggetti emettono ancora altri eventi (vedi dove sta andando: D). Quello che mi piace di questo modello è che dice che le interfacce dovrebbero modellare i ruoli, non le implementazioni.
Scusa se non ho molto senso, ho sperimentato questi pattern negli ultimi mesi con risultati sorprendenti, ma sto ancora cercando di capire i concetti e la loro portata.