peut importe le système d'evenement que tu mets en place, il faut que à la fois l'emmetteur et le recepteur connaisse ce système ...
Donc ca veut dire passer par des interfaces/classes communes.
Toi, ce que tu veux faire, ca ressemble beaucoup un mécanisme observé/observable statique, c'est à dire un endroit où on va envoyer les évenements et un (ou des) endroits où on va pouvoir les recevoir.
Ben ca se fait avec des listeneners : T'as une "classe statique" EventManager qui a une méthode statique addEvent(Event) qui permet d'ajouter des évenements. Elle a aussi une méthode statique addEventListener(EventListener) qui va permettre d'ahjouter des listener de cet évenement. L'interface de EventListener contient juste une méthode du type performEvent(Event).
Donc, quand le EventManager reçoit un évenement, il appelle performEvent de cet évenement sur chacun des listener qui se sont enregistrés.
C'était pour faire simple. Pour être complet il faut désynchroniserle mécanisme, mettre des méthodes removeListener, ajouter la notion de source d'evenement ...
C'est le design pattern observé/observable classique, sauf que toi tu veux le faire de façon "centralisée" => statique : un seul réservoir d'evenements