定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
类图

实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public abstract class AbstractClass {
public abstract void primitiveOperation1(); public abstract void primitiveOperation2(); public void primitiveOperation3() { System.out.println("共有的方法3实现..."); } public void templateMethod() { primitiveOperation1(); primitiveOperation2(); primitiveOperation3(); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class ConcreteClassA extends AbstractClass {
@Override public void primitiveOperation1() { System.out.println("具体类A方法1实现..."); }
@Override public void primitiveOperation2() { System.out.println("具体类A方法2实现..."); }
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class ConcreteClassB extends AbstractClass {
@Override public void primitiveOperation1() { System.out.println("具体类B方法1实现..."); }
@Override public void primitiveOperation2() { System.out.println("具体类B方法2实现..."); }
}
|
1 2 3 4 5 6 7 8 9 10 11
| public class Client {
public static void main(String[] args) { AbstractClass c = new ConcreteClassA(); c.templateMethod(); c = new ConcreteClassB(); c.templateMethod(); } }
|