State パターンを使用すると、オブジェクトの固有の状態が変化したときにオブジェクトの動作を変更し、オブジェクトのクラスが変更されたように見せることができます。状態パターンは主に、オブジェクトの状態を制御する条件式が複雑すぎる場合の状況を解決します。状態判定ロジックを異なる状態を表す一連のクラスに移すことで、複雑な判定ロジックを簡素化できます。
UML クラス図:
キャラクター:
コンテキスト環境 (作業): クライアント プログラムに必要なインターフェイスを定義し、特定の状態ロールのインスタンスを維持し、状態関連の操作を現在の特定のオブジェクトに委任して処理します。
抽象状態 (State): コンテキスト環境を使用して、特定の状態に関連する動作をカプセル化するインターフェイスを定義します。
具象状態 (AmState): 抽象状態によって定義されたインターフェイスを実装します。
コアコード:
リーリー
リーリー
1. オブジェクトの動作はその状態に依存し、実行時の状態に応じて動作を変更する必要があります。
2. 操作には巨大な複数分岐構造が含まれており、これらの分岐はオブジェクトの状態によって決まります。
メリット
1. 状態パターンは、特定の状態に関連する動作を局所化し、異なる状態の動作を分離します。
2. 状態関連のコードはすべて ConcereteState に存在するため、新しいサブクラスを定義することで新しい状態や遷移を簡単に追加できます。
3. ステートモードは、さまざまなステート転送ロジックをステートのサブクラスに分割することで相互依存を軽減します。
デメリット
より多くの ConcreteState サブクラスが生成される
私のビデオコースをフォローすることを歓迎します。アドレスは次のとおりです、ありがとうございます。
PHP オブジェクト指向デザインパターン