1.意圖
定義一個操作中的算法骨架,而將一些步驟延遲到子類。TemplateMethod使得子類
可以不改變算法的結構重新定義算法的某些特定的。
2.參與者
AbstractClass -抽象類定義抽象的原語操作,具體子類將重定義它們實現一個算法的各個步驟
-實現一個算法定義一個骨架。該算法骨架不僅調用原語操作,也調用定義在抽象
類或者其它對象中的操作。
ConcreteClass -實現原語操作以實現算法中與特定子類相關的步驟。
3.結構
4.代碼
public class AbstractClass {
public void Method(){
A();
B();
C();
D();
}
public void A(){
System.out.println("拿杯子");
}
public void B(){
System.out.println("倒入開水");
}
public void C(){
}
public void D(){
System.out.println("攪拌");
}
}
public class ConcreteClass extends AbstractClass {
public void C(){
System.out.println("加咖啡");
}
}
public class ConcreteClass2 extends AbstractClass {
public void C(){
System.out.println("加奶粉");
}
}
public static void main(String[] args) {
AbstractClass a = new ConcreteClass();
a.Method();
System.out.println("*********************");
AbstractClass b = new ConcreteClass2();
b.Method();
}
}