PHP設計モードのテンプレート方法の例を簡単に分析する。


本論文の実例はPHP設計モードのテンプレート方法パターンを説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
動作中のアルゴリズムのフレームワークを定義し、いくつかのステップをサブクラスに遅延させる。サブクラスがアルゴリズムの構造を変えずに、アルゴリズムの特定のステップを再定義することができるようにする。
テンプレートの方法モードでは、抽象的なテンプレートが使用されます。その方法は2つに分類されます。
  • 基本的な方法は、基本的な動作とも呼ばれ、サブクラスによって実現される方法であり、テンプレート方法で呼び出される。
  • テンプレート方法は、1つまたは複数あってもよく、一般的には具体的な方法、すなわちフレームワークであり、基本的な方法のスケジューリングを実現し、固定論理を完了する。
  • 注意:悪意のある操作を防止するために、一般的なテンプレートの方法にはfinalのキーワードが付けられています。上書きは禁止されています。
    注意:抽象的なテンプレートの中の基本的な方法はできるだけprotectedタイプに設計して、ディミットの法則に合って、暴露する属性あるいは方法がいらないで、できるだけprotectedタイプに設定しないでください。実現類が必要でない場合は、親のアクセス権限を拡大しないようにします。
    テンプレート方法の利点
  • は不変部分をカプセル化し、可変部分を拡張する。
  • は、共通部分コードを抽出し、維持に便利である。
  • 行為は親によって制御され、サブクラスは
  • を実現する。
    例:
    
    <?php
    /**
     *       
     */
    abstract class ACar {
      abstract protected function start();
      abstract protected function engineBoom();
      abstract protected function alarm();
      abstract protected function stop();
      public function run() {
        $this->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 book Benz alarm Benz stop BMW start BMW alarm BMW engine book m BMW stop
    注:一部の内容は『デザインモードの禅』から抜粋しています。
    PHPについてもっと興味のある読者は、本駅のテーマを見てもいいです。「php対象プログラム設計入門教程」、「PHP配列(Aray)操作テクニック大全」、「PHP基本文法入門教程」、「PHP演算と演算子の使い方のまとめ」、「php文字列(string)使い方のまとめ」、「php+mysqlデータベース操作入門教程」および「phpよくあるデータベースの操作技巧のまとめ
    本論文で述べたように、皆さんのPHPプログラムの設計に役に立ちますように。