php設計モードのポリシーモード応用事例の詳細

2910 ワード

この例ではphp設計モードのポリシーモード応用について述べる.皆さんの参考にしてください.具体的には以下の通りです.
ポリシー・モード
定義:
ポリシー・モードは、各アルゴリズムをカプセル化し、互いに置き換えることができる一連のアルゴリズムを定義します.ポリシー・モードは、アルゴリズムを使用するお客様とは独立して変化させます.
ロール分析:
  • 抽象ポリシーロール:ポリシークラス、通常は1つのインタフェースまたは抽象クラスによって実現される.
  • の具体的な戦略的役割:関連するアルゴリズムと行為を包装した.
  • 環境ロール:ポリシークラスの参照を持ち、最終的にクライアントに使用されます.

  • 適用シーン:
  • 複数のクラスは、表現動作が異なる場合にのみ区別され、ポリシーモードを使用して、実行時に具体的に実行する動作を動的に選択できます.
  • は、異なる場合に異なるポリシー(アルゴリズム)を使用する必要があるか、またはポリシーは、将来的に他の方法で実現される可能性がある.
  • は、お客様に対してポリシー(アルゴリズム)の実装の詳細を非表示にし、互いに完全に独立しています.

  • コード実装:
    
    strategy = $strategyReflection->newInstance();
        }catch (ReflectionException $e){
          $this->strategy = "";
        }
      }
      function goToSchool(){
        $this->strategy->wayToSchool();
      }
    }
    //   
    $context  = new Context();
    $context->getStrategy('BusStrategy');
    $context->goToSchool();
    
    

    実行結果
    バスで学校へ行きます.
    メリット:
  • ポリシー・モードは、関連するアルゴリズム・ファミリーを管理する方法を提供する.ポリシークラスの階層構造は、アルゴリズムまたは動作ファミリーを定義します.継承を適切に使用すると、共通のコードを親に移行し、重複するコードを回避できます.
  • ポリシー・モードは、継承関係を置き換える方法を提供する.継承は、複数のアルゴリズムまたは動作を処理できます.ポリシー・モードを使用しない場合は、アルゴリズムまたは動作を使用する環境クラスにいくつかのサブクラスがあり、各サブクラスは異なるアルゴリズムまたは動作を提供します.しかし,これによりアルゴリズムや行為の利用者はアルゴリズムや行為そのものと混在する.どのアルゴリズムを使用するか、またはどの行為を採用するかを決定する論理は、アルゴリズムまたは行為の論理と混在しており、これ以上独立して進化することは不可能である.継承により、アルゴリズムや動作を動的に変更することは不可能になります.
  • ポリシー・モードを使用すると、多重条件遷移文の使用を回避できます.多重転送文はメンテナンスしにくく、どのアルゴリズムを採用するか、どの行為を採用するかの論理をアルゴリズムや行為論理と混合し、すべて1つの多重転送文の中に列挙され、継承方法を使用するよりも原始的で遅れている.

  • 欠点:
  • クライアントは、すべてのポリシークラスを知っていて、どのポリシークラスを使用するかを自分で決定する必要があります.これは、クライアントが適切なアルゴリズムクラスを適時に選択するために、これらのアルゴリズムの違いを理解しなければならないことを意味する.言い換えれば、ポリシー・モードは、クライアントが知っているすべてのアルゴリズムまたは動作の場合にのみ適用される.
  • ポリシー・モードは、多くのポリシー・クラスをもたらし、各特定のポリシー・クラスに新しいクラスが生成されます.環境に依存する状態をクライアントに保存し、ポリシークラスを共有するように設計することで、ポリシークラスインスタンスを異なるクライアントで使用できる場合があります.言い換えれば、メタモードを使用してオブジェクトの数を減らすことができます.

  • PHPについてもっと兴味のある読者は、「phpオブジェクト向けプログラミング入門チュートリアル」、「PHP配列(Array)操作テクニック大全」、「PHP基本文法入門チュートリアル」、「PHP演算と演算子用法総括」、「php文字列(string)用法総括」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニック要約」
    ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.