我在状态模式的一个方面缠绕我有点麻烦。我理解维基百科上提供的基本示例等,但是如果我的StateContext
类正在进行条件状态更改,请说明每个州的计时器不同?
例如,我们说的状态是A
,B
,C
和D
。我想根据基于状态的计时器更改状态。例如,在A中保持5秒,B在7秒内,C在3秒内,D在10秒内。
谁应该管理这段时间?每个州都应该知道它的持续时间吗?在这种情况下,我觉得icky将_duration
属性复制并粘贴到每个州,并认为我的State
接口应该是具有该属性的抽象基类。
或者StateContext
应该管理持续时间吗?在这种情况下,我对IsInstanceOf
进行_state
检查感到icky。
答案 0 :(得分:1)
StateContext
和State
都不负责管理状态更改,而是从此模式外部管理的内容。您可能应该使用setState(...)
方法或其他方法来更改State
类中的当前StateContext
实例。