ホームページ > Java > &#&チュートリアル > Java23デザインパターンの詳細事例解説:テンプレートメソッドパターン(コード付き)

Java23デザインパターンの詳細事例解説:テンプレートメソッドパターン(コード付き)

php是最好的语言
リリース: 2018-07-30 10:52:49
オリジナル
1601 人が閲覧しました

定義

一部のステップをサブクラスに延期しながら、アルゴリズムの操作のフレームワークを定義します。これにより、サブクラスは、アルゴリズムの構造を変更せずに、アルゴリズムの特定のステップを再定義できます。

役割

このデザインパターンの役割分担は比較的単純です

  • 抽象テンプレートクラス

  • 具象テンプレートクラス

抽象テンプレートクラスには、いくつかのメソッドが含まれています: テンプレートメソッド、具象メソッド、抽象メソッド、フック方式。

  • テンプレートメソッド

は、特定のメソッド、実装される抽象メソッド、フックメソッドなどを呼び出すアルゴリズムの実装手順を決定します。アルゴリズム実行用のテンプレートです。

  • 具象メソッド

具象メソッドはアルゴリズムのより安定した部分であるため、メソッドの具体的な実装は抽象クラスで与えられます。

  • 抽象メソッド

抽象メソッドは、定義にあるとおり、サブクラスの実装が遅延されるメソッドです。

  • フックメソッド

一般的なテンプレートメソッドはデフォルトの実装を提供します。このメソッドは状況に応じてサブクラスでオーバーライドしたり書き換えたりできます。

UML

実装プロセス

/**
 * Created by tiantian on 2018/7/28
 */public abstract class AbstractTemplateMethod {

    public void templateMethod() {
        implementedMethod();
        abstractMethod();
        hookMethod();        // ... more than method invoke
    }    public void anotherTemplateMethod() {        // do other things
    }    public abstract void abstractMethod();    public void hookMethod() {}    public void implementedMethod() {
        System.out.println("I have been implemented in TemplateMethod class.");
    }    // ... more than method abstract or implemented.}
ログイン後にコピー
ログイン後にコピー
/**
 * Created by tiantian on 2018/7/28
 */public class ConcreteTempleteMethod extends AbstractTemplateMethod {
    @Override
    public void abstractMethod() {
        System.out.println("Do something");
    }    @Override
    public void hookMethod() {
        System.out.println("Do something in hookMethod");
    }
}
ログイン後にコピー
ログイン後にコピー

定義

一部の手順をサブクラスに延期しながら、アルゴリズムで操作フレームワークを定義します。これにより、サブクラスは、アルゴリズムの構造を変更せずに、アルゴリズムの特定のステップを再定義できます。

役割

このデザインパターンの役割分担は比較的単純です

  • 抽象テンプレートクラス

  • 具象テンプレートクラス

抽象テンプレートクラスには、テンプレートメソッド、具象メソッド、抽象メソッド、フック方式。

  • テンプレートメソッド

は、特定のメソッド、実装される抽象メソッド、フックメソッドなどを呼び出すアルゴリズムの実装手順を決定します。アルゴリズム実行用のテンプレートです。

  • 具象メソッド

具象メソッドはアルゴリズムのより安定した部分であるため、メソッドの具体的な実装は抽象クラスで与えられます。

  • 抽象メソッド

抽象メソッドは、定義にあるとおり、サブクラスの実装が遅延されるメソッドです。

  • フックメソッド

一般的なテンプレートメソッドはデフォルトの実装を提供します。このメソッドは状況に応じてサブクラスでオーバーライドしたり書き換えたりできます。

UML

実装プロセス

/**
 * Created by tiantian on 2018/7/28
 */public abstract class AbstractTemplateMethod {

    public void templateMethod() {
        implementedMethod();
        abstractMethod();
        hookMethod();        // ... more than method invoke
    }    public void anotherTemplateMethod() {        // do other things
    }    public abstract void abstractMethod();    public void hookMethod() {}    public void implementedMethod() {
        System.out.println("I have been implemented in TemplateMethod class.");
    }    // ... more than method abstract or implemented.}
ログイン後にコピー
ログイン後にコピー
/**
 * Created by tiantian on 2018/7/28
 */public class ConcreteTempleteMethod extends AbstractTemplateMethod {
    @Override
    public void abstractMethod() {
        System.out.println("Do something");
    }    @Override
    public void hookMethod() {
        System.out.println("Do something in hookMethod");
    }
}
ログイン後にコピー
ログイン後にコピー

関連記事:

Javaデザインパターン - デザインパターンの6つの原則

JAVAデザインパターンファクトリパターン(シンプルファクトリパターン+ファクトリメソッドパターン)

関連ビデオ:

デザインパターン

以上がJava23デザインパターンの詳細事例解説:テンプレートメソッドパターン(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート