PHP設計モードのテンプレート方法モード例の浅い分析

2691 ワード

この例では,PHP設計モードのテンプレートメソッドモードについて述べる.皆さんの参考にしてください.具体的には以下の通りです.
操作中のアルゴリズムのフレームワークを定義し、いくつかのステップをサブクラスに遅延します.サブクラスは、アルゴリズムの構造を変更することなく、アルゴリズムの特定のステップを再定義することができる.
テンプレート・メソッド・モードでは、抽象テンプレートが使用されます.このメソッドは、次の2つに分類されます.
  • 基本メソッドは、基本オペレーションとも呼ばれ、サブクラスによって実現されたメソッドであり、テンプレートメソッドで呼び出される.
  • テンプレートメソッドは、1つ以上あってもよく、一般的には特定のメソッド、すなわちフレームワークであり、基本メソッドのスケジューリングを実現し、固定論理を完了する.

  • 注意:悪意のある操作を防ぐため、一般的なテンプレートメソッドにはfinalキーワードが付けられており、上書きは許されません.
    注意:抽象テンプレートの基本的な方法はできるだけprotectedタイプに設計され、ディミットの法則に合致し、露出する属性や方法をできるだけprotectedタイプに設定しないでください.実装クラスが必要でない場合は、親のアクセス権を拡大しないようにします.
    テンプレートメソッドモードの利点
  • は不変部分をパッケージし、可変部分を拡張する.
  • 共通部分コードを抽出し、メンテナンスが容易です.
  • 動作は親によって制御され、子は
  • を実現する.
    例:
    
    start();
        $this->engineBoom();
        $this->alarm();
        $this->stop();
      }
    }
    final class Benz extends ACar {
      protected function start() {
        echo 'Benz start' . PHP_EOL;
      }
      protected function engineBoom() {
        echo 'Benz engine boom' . PHP_EOL;
      }
      protected function alarm() {
        echo 'Benz alarm' . PHP_EOL;
      }
      protected function stop() {
        echo 'Benz stop' . PHP_EOL;
      }
    }
    final class BMW extends ACar {
      protected function start() {
        echo 'BMW start' . PHP_EOL;
      }
      protected function engineBoom() {
        echo 'BMW engine boom' . PHP_EOL;
      }
      protected function alarm() {
        echo 'BMW alarm' . PHP_EOL;
      }
      protected function stop() {
        echo 'BMW stop' . PHP_EOL;
      }
      //     
      public function run() {
        $this->start();
        $this->alarm();
        $this->engineBoom();
        $this->stop();
      }
    }
    class Client {
      public static function run() {
        $benz = new Benz();
        $benz->run();
        $bmw = new BMW();
        $bmw->run();
      }
    }
    Client::run();
    
    

    実行結果:
    Benz start Benz engine boom Benz alarm Benz stop BMW start BMW alarm BMW engine boom BMW stop
    注:一部の内容は『デザインモードの禅』から抜粋
    PHPについてもっと兴味のある読者は、「phpオブジェクト向けプログラミング入門チュートリアル」、「PHP配列(Array)操作テクニック大全」、「PHP基本文法入門チュートリアル」、「PHP演算と演算子用法総括」、「php文字列(string)用法総括」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニック要約」
    ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.