23、状态模式:延迟事件与正交组件解析

状态模式:延迟事件与正交组件解析

1. 延迟事件模式

延迟事件通常在高级状态下被延迟处理,往往位于该状态的内部转换中。当进入能够方便处理该延迟事件类型的状态时,事件会被召回。需要注意的是,事件在明确召回时不应立即处理,而是通过 recall() 操作使用后进先出(LIFO)策略将其发布,以确保状态机在处理事件之前不会改变状态。与提醒模式不同的是,延迟事件通常是外部事件,而非人为创造的。

例如,在某些系统中,当接收到某个事件,但当前状态无法立即处理该事件时,就可以将其延迟处理,等到合适的状态再进行召回处理。

在实时对象面向对象建模(ROOM)方法中,支持这里介绍的延迟事件模式的一种变体。ROOM虚拟机(用于执行ROOM模型的基础设施)和QF实时框架一样,提供了通用的 defer() recall() 方法,客户端需要显式调用这些方法。ROOM虚拟机还负责事件排队,并且 defer() recall() 操作是特定于接收事件的接口组件的。

2. 正交组件模式
2.1 问题提出

许多对象由相对独立且具有状态行为的部分组成。以简单的数字闹钟为例,它执行两个主要独立的功能:基本计时功能和闹钟功能。每个功能都有自己的操作模式,如计时可以是12小时制或24小时制,闹钟可以开启或关闭。

在UML状态图中,通常的做法是将这些松散相关的功能放在单独的正交区域中。然而,正交区域是一种相对昂贵的机制,当前的QEP事件处理器实现不支持该机制。此外,正交区域通常不是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值