条件状态变化的状态模式

时间:2012-02-20 01:07:25

标签: java design-patterns state

我在状态模式的一个方面缠绕我有点麻烦。我理解维基百科上提供的基本示例等,但是如果我的StateContext类正在进行条件状态更改,请说明每个州的计时器不同?

例如,我们说的状态是ABCD。我想根据基于状态的计时器更改状态。例如,在A中保持5秒,B在7秒内,C在3秒内,D在10秒内。

谁应该管理这段时间?每个州都应该知道它的持续时间吗?在这种情况下,我觉得icky将_duration属性复制并粘贴到每个州,并认为我的State接口应该是具有该属性的抽象基类。

或者StateContext应该管理持续时间吗?在这种情况下,我对IsInstanceOf进行_state检查感到icky。

1 个答案:

答案 0 :(得分:1)

StateContextState都不负责管理状态更改,而是从此模式外部管理的内容。您可能应该使用setState(...)方法或其他方法来更改State类中的当前StateContext实例。