한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
状態パターン
意味
ステートマシンパターンとも呼ばれます
特定の状態に関連する動作をカプセル化するさまざまな状態クラスを定義し、状態判断ロジックをさまざまな状態を表す一連のクラスに転送することにより、複雑な判断ロジックが簡素化されます。
- 状態パターンは状態と動作を分離し、オブジェクトの内部状態が変化したときにオブジェクトの動作を変更できるようにします。
- 各状態はサブクラスに対応するため、状態遷移ロジックが状態サブクラスに分散され、相互依存が軽減されます。
- 通常、クライアントは状態オブジェクトと直接対話しませんが、環境クラス (Context) を通じて状態オブジェクトと対話します。
該当シーン
- オブジェクトの動作はその状態に依存し、実行時に状態に基づいて動作を変更する必要があります。
- 操作には巨大な複数の分岐構造が含まれており、これらの分岐はオブジェクトの状態によって決定されます。
標準例

状態パターン構造図には、通常、次の役割が含まれています。
- コンテキスト (環境クラス): コンテキスト クラスとも呼ばれ、複数の状態を持つオブジェクトです。現在の状態を定義する抽象状態クラス State のインスタンスを環境クラスで維持します。
- 状態 (抽象状態クラス): 環境クラスの特定の状態に関連する動作をカプセル化するインターフェイスを定義するために使用されます。さまざまな状態に対応するメソッドは、抽象状態クラスで宣言され、サブクラスで実装されます。
- ConcreteState (具象状態クラス): 抽象状態クラスのサブクラスであり、各サブクラスは環境クラスの状態に関連する動作を実装します。
IState
public interface IState {
void handle();
}