PHP設計モードのテンプレート方法モード例の浅い分析
2691 ワード
この例では,PHP設計モードのテンプレートメソッドモードについて述べる.皆さんの参考にしてください.具体的には以下の通りです.
操作中のアルゴリズムのフレームワークを定義し、いくつかのステップをサブクラスに遅延します.サブクラスは、アルゴリズムの構造を変更することなく、アルゴリズムの特定のステップを再定義することができる.
テンプレート・メソッド・モードでは、抽象テンプレートが使用されます.このメソッドは、次の2つに分類されます.基本メソッドは、基本オペレーションとも呼ばれ、サブクラスによって実現されたメソッドであり、テンプレートメソッドで呼び出される. テンプレートメソッドは、1つ以上あってもよく、一般的には特定のメソッド、すなわちフレームワークであり、基本メソッドのスケジューリングを実現し、固定論理を完了する.
注意:悪意のある操作を防ぐため、一般的なテンプレートメソッドにはfinalキーワードが付けられており、上書きは許されません.
注意:抽象テンプレートの基本的な方法はできるだけprotectedタイプに設計され、ディミットの法則に合致し、露出する属性や方法をできるだけprotectedタイプに設定しないでください.実装クラスが必要でない場合は、親のアクセス権を拡大しないようにします.
テンプレートメソッドモードの利点は不変部分をパッケージし、可変部分を拡張する. 共通部分コードを抽出し、メンテナンスが容易です. 動作は親によって制御され、子は を実現する.
例:
実行結果:
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プログラム設計に役立つことを願っています.
操作中のアルゴリズムのフレームワークを定義し、いくつかのステップをサブクラスに遅延します.サブクラスは、アルゴリズムの構造を変更することなく、アルゴリズムの特定のステップを再定義することができる.
テンプレート・メソッド・モードでは、抽象テンプレートが使用されます.このメソッドは、次の2つに分類されます.
注意:悪意のある操作を防ぐため、一般的なテンプレートメソッドには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プログラム設計に役立つことを願っています.