13.3.3 语义

事件派发

事件是可能触发行为后果的一些出现的规约。触发器在行为的定义中规定了一个特定的点,事件出现可以在此处产生作用。事件是一个可打包元素,使得事件可以独立于它的使用被建模。然而,触发器总是作为大型行为规约(例如,在状态机的状态转换上或在一个AcceptEventAction中)的一部分出现。单个事件可以被用到多个不同的触发器中。

如图13.2.3所讨论的,行为执行总是有一个相关联的上下文对象(可能是执行自身)。上下文对象调解与行为相关的事件出现的处理。当上下文对象识别到一个事件出现时,该事件出现将会立即产生效果或它被存储用于以后的效果触发。立即效果的产生可以通过直接调用一个由事件决定的行为来反映出来,例如行为特征的方法的调用(参见13.2.3)。以后的效果触发体现在把事件出现存储在对象的事件池,以后在行为执行到达一个与该事件出现匹配的触发器时消费该事件出现。

通常,当行为执行到达一个需要一个触发器触发才能继续的等待点时,上下文对象检查它的事件池看是否有一个事件可以满足触发器要求。如果事件池中有一个事件出现满足其中一个触发器,该事件出现从事件池中移除并派发到该行为,使其按规定继续执行。与该事件出现关联的任何数据都可以用于被触发的行为的进一步执行。

注意. 相同上下文对象的所有行为共享该对象的事件池,但任一事件出现只能被一个行为所消费。

对事件池中事件出现的检查和派发没有特定的次序要求。如果事件池中没有一个事件出现可以满足行为等待点上的触发器,那么行为分类符的一般语义没有规定它要发生什么。(然而,14.2状态机中有对于事件出现和延迟又特定的语义。)

results matching ""

    No results matching ""