状態パターンは、内部状態が変化したときにオブジェクトの動作を変更できるようにする動作パターンです。オブジェクトはそのクラスを変更したように見え、状態モードの変更の場所はオブジェクトの状態にあります。
主な役割
抽象状態 (State) の役割: 環境オブジェクトの特定の状態に対応する動作をカプセル化するインターフェイスを定義します
具象状態 (ConcreteState) の役割: 各具象状態クラスが環境を実装します ( に対応する動作コンテキストの状態
環境 (コンテキスト) ロール: クライアントが関心のあるインターフェイスを定義し、特定の状態クラスのインスタンスを保持します。この具象状態クラスのインスタンスは、この環境オブジェクトの現在の状態を示します
適用性
オブジェクトの動作はその状態に依存し、実行時の状態に基づいて動作を変更する必要があります
操作 複数の分岐を持つ条件文。これらの分岐はオブジェクトの状態に依存します。この状態は通常、1 つ以上の列挙定数によって表されます。多くの場合、これと同じ条件構造を含む複数の操作が存在します。ステート モードでは、各条件分岐が別のクラスに配置されます。これにより、オブジェクトの状態をオブジェクトとして扱うことができ、他のオブジェクトに依存せずに独立して変更できます
状態遷移を明示的にします
状態オブジェクトを共有できます