テンプレート方法モード(Template Method Pattern)
6656 ワード
意図
一つの方法では、アルゴリズムの骨格を定義し、いくつかのステップをサブクラスに遅延させる.テンプレート方法は、アルゴリズム構造を変えずに、アルゴリズム中のいくつかのステップを再定義できるようにする.
動機
システムを設計する際に、アルゴリズムに必要なキーステップを明確にし、これらのステップの実行順序を決定したが、いくつかのステップの具体的な実装はまだ未知であるか、または特定の環境に依存する必要がある.明確なアルゴリズムステップは親クラスでテンプレート方法として定義でき、未知の具体的な実装部分はサブクラスに遅延して実装される.
適用性
テンプレート方法モードは、通常、以下のシーンに適用される.アルゴリズムの全体的なステップは固定されていますが、一部の部分が変わりやすい場合は、テンプレートの方法モードを使用して、容易に変化する部分を抽象化して、サブクラスで実現できます. は、複数のサブクラスが共通の動作をしている場合、コードの重複を回避するために、1つの共通の親クラスに抽出して統合することができる.まず、既存のコードの違いを識別し、異なる点を新たな動作に分離します.最後に、これらの新しい動作を呼び出すテンプレート方法でこれらの異なるコードを置換します. サブクラスの拡張を制御する必要がある場合、テンプレート方法は、特定のポイントでのみフック動作を起動し、これらの点でのみ拡張が可能になる. 構造
テンプレートの方法の主要な役割は以下の通りです.抽象クラス(AbstractClass):テンプレート方法を定義し、アルゴリズムの輪郭と骨格を与える.テンプレート法といくつかの基本的な方法で構成されています. 具体的なサブクラス(Cocrete Class):親クラスで定義された抽象的な方法を実現し、フック方法を選択的に実現する. 実現する
適用済み java.util.coollections() java.io.InputStream() 関連モード
テンプレート方法、ポリシーモード
参考資料「 図面設計モード Java設計モード:23種類の設計モードの全面解析(スーパー詳細)
一つの方法では、アルゴリズムの骨格を定義し、いくつかのステップをサブクラスに遅延させる.テンプレート方法は、アルゴリズム構造を変えずに、アルゴリズム中のいくつかのステップを再定義できるようにする.
動機
システムを設計する際に、アルゴリズムに必要なキーステップを明確にし、これらのステップの実行順序を決定したが、いくつかのステップの具体的な実装はまだ未知であるか、または特定の環境に依存する必要がある.明確なアルゴリズムステップは親クラスでテンプレート方法として定義でき、未知の具体的な実装部分はサブクラスに遅延して実装される.
適用性
テンプレート方法モードは、通常、以下のシーンに適用される.
テンプレートの方法の主要な役割は以下の通りです.
//
public abstract class AbstractClass {
// , ,
public void templateMethod() {
hookMethod();
primitiveoperationA();
primitiveoperationB();
}
// ,
public void hookMethod() {
System.out.println(" , ( ) , 。");
}
// ,
public abstract void primitiveoperationA();
public abstract void primitiveoperationB();
}
//
public class ConcreteClass extends AbstractClass {
@Override
public void primitiveoperationA() {
System.out.println("primitiveoperationA() 。。。");
}
@Override
public void primitiveoperationB() {
System.out.println("primitiveoperationA() 。。。");
}
}
//
public class TestClient {
public static void main(String[] args) {
AbstractClass concrete = new ConcreteClass();
concrete.templateMethod();
}
}
コードの実現によって、父(高層部品)はいつ制御し、どのように低層のコンポーネントを参加させるか、つまり、高層のコンポーネントは低層のコンポーネントに対しては「私を呼び出しないでください.あなたたちを呼び出します」という方法で、ハリウッドの原則を完璧に体現しています.適用済み
テンプレート方法、ポリシーモード
参考資料
Head First
設計モード」