我在理解状态模式的一个方面时遇到了一些麻烦。我了解维基百科等提供的基本示例,但是如果我的StateContext
班级正在对每个状态不同的计时器进行有条件的状态更改怎么办?
例如,假设我们的状态是A
、B
、C
和D
。我想根据基于状态的计时器更改状态。例如,在 A 停留 5 秒,在 B 停留 7 秒,在 C 停留 3 秒,在 D 停留 10 秒。
谁应该管理这个持续时间?每个州都应该知道它的持续时间吗?在这种情况下,我觉得将_duration
属性复制并粘贴到每个状态都很麻烦,并认为我的State
接口可能应该是具有该属性的抽象基类。
还是应该StateContext
管理持续时间?在这种情况下,我IsInstanceOf
对我的_state
.