テンプレート メソッド パターン パターンは、操作内のアルゴリズムのスケルトンを定義し、一部のステップをサブクラスに延期する動作パターンです。テンプレート メソッドを使用すると、アルゴリズムの構造を変更せずに、サブクラスでアルゴリズムの特定のステップを再定義できます。
主な役割
抽象テンプレート (AbstractClass) の役割
サブクラスが実装する 1 つ以上の抽象メソッドを定義します。これらの抽象メソッドは基本操作と呼ばれ、トップレベル ロジックのコンポーネントです。
テンプレートメソッドを定義します。このテンプレート メソッドは通常、トップレベル ロジックの骨格を与える具象メソッドであり、論理構成ステップは対応する抽象操作内にあり、これらの操作はサブクラスに延期されます。同時に、トップレベル ロジックは、特定の実装メソッドを呼び出すこともできます
具象テンプレート (ConcrteClass) ロール
は、トップレベル ロジックのコンポーネントとして存在する、親クラスの 1 つ以上の抽象メソッドを実装します。
各抽象テンプレートは、それに対応する複数の具象テンプレートを持つことができ、各具象テンプレートには抽象メソッド (つまり、トップレベル ロジックのコンポーネント) の独自の実装があるため、トップレベル ロジックの実装は異なります。
適用性
アルゴリズムの不変部分を一度実装し、変数の動作はサブクラスに任せます。
コードの重複を避けるために、各サブクラスの共通の動作を抽出して共通の親クラスに集約する必要があります。
コントロールのサブクラス拡張。
クラス図
インスタンス
<?php abstract class AbstractClass { // 抽象模板角色 public function templateMethod() { // 模板方法 调用基本方法组装顶层逻辑 $this->primitiveOperation1(); $this->primitiveOperation2(); } abstract protected function primitiveOperation1(); // 基本方法 abstract protected function primitiveOperation2(); } class ConcreteClass extends AbstractClass { // 具体模板角色 protected function primitiveOperation1() {} protected function primitiveOperation2(){} } $class = new ConcreteClass(); $class->templateMethod(); ?>