在我当前的项目中,我们使用的是事件系统,它不带优先级地传播事件。我的意思是准确的。问题是事件的调用没有优先级,因此这意味着侦听类会触发它们的“消息”代码,以便将它们添加到侦听器容器中。
它有时会导致难以预测的难以分析的结果。
您是否知道任何现有的解决方案以“好的方式”处理事件排序?
在我当前的项目中,我们使用的是事件系统,它不带优先级地传播事件。我的意思是准确的。问题是事件的调用没有优先级,因此这意味着侦听类会触发它们的“消息”代码,以便将它们添加到侦听器容器中。
它有时会导致难以预测的难以分析的结果。
您是否知道任何现有的解决方案以“好的方式”处理事件排序?
优先考虑事件是通往地狱的高速公路。没有字面意思。您需要跟踪哪些对象需要哪些优先级。然后你会用完优先级。接下来,您意识到您已经将相同的依赖项(优先级常量类)硬编码到 100 个类中,并且实际上已经将它们捆绑在一起。好吧,也许不是,但陷阱很多,而且不幽默。你得看看你想达到什么:你想按顺序执行流程。它与事件没有任何关系,除了这些过程是由事件触发的完全任意的事实。
有很多解决方案:
在您的侦听器类中添加某种依赖标志。也就是说,假设监听器 A 被调用,它依赖于监听器 B,然后让 B 先执行。类似地,您可以将依赖条件放在所有侦听器类中,从而创建所需的层次结构。
只要确保你没有添加循环依赖或小心处理它。
可能对您有利。PriorityBlockingQueue
使您的事件实现可比,并且事件调度程序线程每次都消耗最高优先级的事件。