Frage

Ich benutze CDI und möchte wissen, wie der Anrufer mitgeteilt wird, dass der Beobachter ein Ereignis beobachtet oder nicht. Wenn keine Beobachtungen auf dieses Ereignis wirken, möchte ich etwas tun. Ich sehe nicht, dass dies irgendwo in der Dokumentation dokumentiert wird, außer dass es einen Hinweis gab, dass der Anrufer benachrichtigt wird.

Vielen Dank,

Walter

War es hilfreich?

Lösung

Ich glaube nicht, dass der Anrufer benachrichtigt wird (es ist nicht das, worum es beim Beobachtermuster tatsächlich geht). Aber Sie können versuchen, dies zu arbeiten, um zu arbeiten:

  • Sie können ein Feld haben, das das Ereignisobjekt - private boolean consumed und setzen es auf true Wenn es verzehrt wird. Dann (die Ereignisse werden synchron behandelt) prüfen diese Variable.

  • Entlassung eines neuen Ereignisses von den Beobachtern, das vom Ereignisproduzenten beobachtet wird

  • Wenn Sie den Nutzen der losen Kupplung fallen lassen möchten und genau wissen, welcher Event -Produzent ist, können Sie @Inject Es in alle Zuhörer und lassen sie eine Methode darauf aufrufen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top