我正在使用 CDI,想知道如何通知调用者观察者是否观察到事件。如果没有观察者对该事件采取行动,那么我想做点什么。除了通知调用者的提示之外,我没有在文档中的任何地方看到这一点。

谢谢,

瓦尔特

有帮助吗?

解决方案

我认为调用者不会收到通知(这不是观察者模式实际上的目的)。但您可以尝试通过以下方式解决此问题:

  • 你可以有一个事件对象的字段 - private boolean consumed 并将其设置为 true 如果它被消耗了。然后,(事件被同步处理)在事件生成器中检查该变量。

  • 从事件生产者观察到的观察者激发一个新事件

  • 如果您想放弃松散耦合的好处,并且您确切地知道事件生产者是谁,您可以 @Inject 它进入所有侦听器,并让他们调用它的方法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top