【发布时间】:2020-03-23 10:40:04
【问题描述】:
我在理解状态模式的一个方面时遇到了一些麻烦。我了解维基百科等提供的基本示例,但是如果我的 StateContext 班级正在对每个状态不同的计时器进行有条件的状态更改怎么办?
例如,假设我们的状态是 A、B、C 和 D。我想根据基于状态的计时器更改状态。例如在 A 停留 5 秒,B 停留 7 秒,C 停留 3 秒,D 停留 10 秒。
谁应该管理这个持续时间?每个州都应该知道它的持续时间吗?在这种情况下,我觉得将_duration 属性复制并粘贴到每个状态很麻烦,我认为我的State 接口应该是具有该属性的抽象基类。
还是应该由StateContext 管理持续时间?在这种情况下,我对IsInstanceOf 检查我的_state 感到恶心。
【问题讨论】:
标签: java design-patterns state-pattern