Ok, die Liste gehört dahin, wo gefeuert wird
Wieso? Dann muss ja in Zukunft jede Klasse, die Multicast unterstützen soll, deine Logik nochmal implementieren. Schreib Dir doch lieber einen einzigen Multicasteventcontroller.
Derjenige, der etwas (ein Event) mitzuteilen hat, meldet sich und den Eventtyp beim Controller an.
Diejenigen, die benachrichtigt werden wollen, melden sich und den Eventtyp, über den sie benachrichtigt werden wollen, ebenfalls dort an. So hast Du eine lose Bindung und eine einzige Klasse, die alle Events verwaltet.
Wo ist das Smiley mit Kreuz, Knoblauch und Pflock, wenn man es braucht?
Das klingt mir aber sehr nach einem Singleton - ne tolle lose Binding
Und
EDA braucht man für diesen Anwendungsfall eher nicht.