Java 事件系统排序问题

Java 事件系统排序问题,java,events,design-patterns,Java,Events,Design Patterns,在我当前的项目中,我们使用的是无优先级传播事件的事件系统。我的意思正是。问题是调用事件时没有优先级,因此这意味着侦听类按照添加到侦听器容器的顺序触发其“on message”代码 它有时会导致难以预测的分析结果 您知道有任何现有的解决方案可以“很好地”处理事件排序吗?在侦听器类中添加一种依赖性标志。也就是说,假设调用了侦听器A,它依赖于侦听器B,然后让B先执行。类似地,您可以在所有侦听器类中设置依赖条件,从而创建所需的层次结构 请确保不要添加循环依赖项或小心处理它。在侦听器类中添加一种依赖项标志

在我当前的项目中,我们使用的是无优先级传播事件的事件系统。我的意思正是。问题是调用事件时没有优先级,因此这意味着侦听类按照添加到侦听器容器的顺序触发其“on message”代码

它有时会导致难以预测的分析结果


您知道有任何现有的解决方案可以“很好地”处理事件排序吗?

在侦听器类中添加一种依赖性标志。也就是说,假设调用了侦听器A,它依赖于侦听器B,然后让B先执行。类似地,您可以在所有侦听器类中设置依赖条件,从而创建所需的层次结构


请确保不要添加循环依赖项或小心处理它。

在侦听器类中添加一种依赖项标志。也就是说,假设调用了侦听器A,它依赖于侦听器B,然后让B先执行。类似地,您可以在所有侦听器类中设置依赖条件,从而创建所需的层次结构


请确保不要添加循环依赖项或小心处理。

优先级阻止队列可能会对您有利。请确保您的事件执行具有可比性,事件调度程序线程每次都消耗最高优先级的事件。

优先级阻塞队列可能会对您有利。让您的事件实现具有可比性,事件调度程序线程每次都消耗最高优先级的事件。

对事件进行优先级排序是通往地狱的高速公路。没有。 您需要跟踪哪些对象需要什么优先级。那你就没有优先权了。接下来,您意识到您已经将相同的依赖项(priority constants类)硬编码到100个类中,并将它们完全绑定在一起。嗯,也许不是,但陷阱很多,也不幽默。 你必须考虑你想要实现的目标: 您希望对流程执行序列进行排序。它与事件没有任何关系,只不过这些过程是由事件触发的这一完全武断的事实

有许多解决方案:

  • 使用迄今为止最通用、最清晰的解决方案
  • 隔离需要按一个特定事件触发的顺序执行的进程,并以某种方式将其排队,例如,使用,并通过事件触发队列中所有命令的执行。或者使用也是一种可能性
  • 事件链接的正确方式:如果ClassA需要响应事件A,但仅在ClassB完成其处理之后,那么ClassA不应该响应事件A,而应该响应从ClassB调度的事件。最不可取的是,不过有时候你得快点

  • 优先处理事件是通往地狱的高速公路。没有。 您需要跟踪哪些对象需要什么优先级。那你就没有优先权了。接下来,您意识到您已经将相同的依赖项(priority constants类)硬编码到100个类中,并将它们完全绑定在一起。嗯,也许不是,但陷阱很多,也不幽默。 你必须考虑你想要实现的目标: 您希望对流程执行序列进行排序。它与事件没有任何关系,只不过这些过程是由事件触发的这一完全武断的事实

    有许多解决方案:

  • 使用迄今为止最通用、最清晰的解决方案
  • 隔离需要按一个特定事件触发的顺序执行的进程,并以某种方式将其排队,例如,使用,并通过事件触发队列中所有命令的执行。或者使用也是一种可能性
  • 事件链接的正确方式:如果ClassA需要响应事件A,但仅在ClassB完成其处理之后,那么ClassA不应该响应事件A,而应该响应从ClassB调度的事件。最不可取的是,不过有时候你得快点