1. 定义:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2. 类图:
3. 代码示例:
public abstract class AbstractClass {
protected abstract void primitiveOperation1();
protected abstract void primitiveOperation2();
final public void templateMethod(){
this.primitiveOperation1();
this.primitiveOperation2();
};
}
public class ConcreteClassA extends AbstractClass {
@Override
protected void primitiveOperation1() {
System.out.println("A1");
}
@Override
protected void primitiveOperation2() {
System.out.println("A2");
}
}
public class ConcreteClassB extends AbstractClass {
@Override
protected void primitiveOperation1() {
System.out.println("B1");
}
@Override
protected void primitiveOperation2() {
System.out.println("B2");
}
}
public class Client {
public static void main(String[] args) {
AbstractClass a = new ConcreteClassA();
a.templateMethod();
a = new ConcreteClassB();
a.templateMethod();
}
}