public class EmisorEventos {
// 0: subscripcion
void addListener(Listener listener) {...}
void foo() {
...
if (happensEventC) {
Event event = new EventC(bar); // 1
for (Listener l : getListeners()) {
if (l.listenFor(event)) { // filtro
l.accept(event); // 2
}
}
}
...
}
}