1

Stateパターンの1つの側面に頭を巻き付けるのに少し問題があります。ウィキペディアなどで提供されている基本的な例は理解していますが、StateContextクラスが条件付きの状態変更を、たとえば各状態に固有のタイマーで行っている場合はどうなりますか?

したがって、たとえば、状態が、、、、AおよびであるとしBます。そして、状態ベースのタイマーに基づいて状態を変更したいと思います。たとえば、Aに5秒間、Bに7秒間、Cに3秒間、Dに10秒間留まります。CD

誰がその期間を管理する必要がありますか?各州はその期間を知っている必要がありますか?_durationその場合、属性を各状態にコピーして貼り付けるのは面倒で、Stateインターフェイスはその属性を持つ抽象基本クラスである必要があると思います。

またはStateContext、期間を管理する必要がありますか?IsInstanceOfその場合、私は自分のチェックをするのが面倒だと感じ_stateます。

4

1 に答える 1

1

状態の変化を管理する責任StateContextもありません。このパターンの外部から管理されるものです。Stateおそらく、クラス内の現在のインスタンスsetState(...)を変更するためのメソッドまたは別のメソッドが必要です。StateStateContext

于 2012-02-20T01:24:46.533 に答える