「Template」とは、「プラスチック板に文字・図形などの外形をくりぬいた製図用具」の事を言います。
Templateを利用して製図すると、枠組みが同じ文字・図形を作成できます。ただ、どんな筆記具で製図するか、どんな色で製図するか等により、できあがりの見栄えが変わってきます。つまり、「Template Method パターン」とは、処理手順の枠組みを提供するパターンです。
具体的には、スーパークラスで処理手順の枠組みを決め、その手順で利用するメソッドを抽象メソッドで定義しておきます。そしてその抽象メソッドを、サブクラスで実装し、具体的な処理内容を定義するという形になります。
Template Methodパターンのクラス図
1. AbstractClass.java
public abstract class AbstractClass {
/** 「templateMethod」に「final」修飾子を付けをオーバーライド出来ないようにします。
処理内容をサブクラスで変更されるのを禁止します。 */
public final void templateMethod(){
method1();
method2();
}
/** 外部から直接アクセスさせないようにします。サブクラスでのオーバーライドを強制という意味を込めて「protected」にします。 */
protected abstract void method1();
protected abstract void method2();
}
2. ConcreteClass.java
public class ConcreteClass extends AbstractClass {
public void method1(){
System.out.println("method1");
}
public void method2(){
System.out.println("method2");
}
}
3. Client.java
public class Client {
public static void main(String[] args){
AbstractClass AC = new ConcreteClass();
AC.templateMethod();
}
}
C:\sample\desin_pattern\template_method>javac Client.java [Enter] C:\sample\desin_pattern\template_method>java Client [Enter] method1 method2