1

我在理解状态模式的一个方面时遇到了一些麻烦。我了解维基百科等提供的基本示例,但是如果我的StateContext班级正在对每个状态不同的计时器进行有条件的状态更改怎么办?

例如,假设我们的状态是ABCD。我想根据基于状态的计时器更改状态。例如,在 A 停留 5 秒,在 B 停留 7 秒,在 C 停留 3 秒,在 D 停留 10 秒。

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

还是应该StateContext管理持续时间?在这种情况下,我IsInstanceOf对我的_state.

4

1 回答 1

1

既不StateContext也不State负责管理状态变化,它是从这个模式之外管理的东西。您可能应该有一个setState(...)方法或另一种方法来更改类中的当前State实例StateContext

于 2012-02-20T01:24:46.533 回答