Stateパターンの1つの側面に頭を巻き付けるのに少し問題があります。ウィキペディアなどで提供されている基本的な例は理解していますが、StateContext
クラスが条件付きの状態変更を、たとえば各状態に固有のタイマーで行っている場合はどうなりますか?
したがって、たとえば、状態が、、、、A
およびであるとしB
ます。そして、状態ベースのタイマーに基づいて状態を変更したいと思います。たとえば、Aに5秒間、Bに7秒間、Cに3秒間、Dに10秒間留まります。C
D
誰がその期間を管理する必要がありますか?各州はその期間を知っている必要がありますか?_duration
その場合、属性を各状態にコピーして貼り付けるのは面倒で、State
インターフェイスはその属性を持つ抽象基本クラスである必要があると思います。
またはStateContext
、期間を管理する必要がありますか?IsInstanceOf
その場合、私は自分のチェックをするのが面倒だと感じ_state
ます。