Template method Pattern


テンプレートメソッドパターンの定義は、Templateメソッドがアルゴリズムのスケルトンを抽象クラスとして定義し、そのサブクラスが特定の動作を提供することを可能にすることである.ウィキペディアで見つけられます.説明するには,アルゴリズムのスケルトンを抽象クラスとして定義し,サブクラスが具体的な動作を提供できるようにする.
まず、スーパークラス、すなわち抽象クラスは、サブクラスで実装されたメンバーを継承します.
abstract class Letter {
  String content;
  public void setContent(String content) {
    this.content = content;
  }
以降のスーパークラスでは、機能がどのように動作するかを定義します.すなわち,テンプレートロールとしてのメソッドをスーパークラスに配置する.
public void print() {
	this.printHeader();
  System.out.println(this.content);
  System.out.println();
  System.out.printf("      from %s \n", this.getSign());
}
public abstract void printHeader();
public abstract void printFooter();
public abstract void String getSign();
}
前述したように、抽象メソッドを作成し、サブクラスインプリメンテーションに詳細を渡します.
詳細機能の実装はサブクラスで上書きされます.
class TaxBill extends Letter {

@Override
public void printHeader() {
  System.out.println("----------고지서입니다---------");
}

@Override
public String getSign() {
  return "한국전력공사";
}

@Override
public void printFooter() {
  System.out.println("-----------전력공사 드림----------");

 }
}
 public class PrintTemplate {
 public static void main(String[] args) {
   Letter1 letter = new Bill();
   letter.setContent("이번달 전기요금은 54,500원 입니다.");
   letter.print();
 }
}
上記コードを実行する場合
以下の結果が得られた.

Template Methodモードは,拡張機能を継承する設計モードに重点を置いているといえる.
しかし欠点は,抽象クラスで定義する方法が多くなると,機能が複雑になることである.