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

1 public abstract class AbstractClass {
2 public abstract void primitiveOperation1();
3 public abstract void primitiveOperation2();
4
5 public void templateMethod(){
6 primitiveOperation1();
7 primitiveOperation2();
8 }
9 }
AbstractClass
1 public class ConcreteClassA extends AbstractClass {
2
3 @Override
4 public void primitiveOperation1() {
5 System.out.println("A实现1.。。。");
6
7 }
8
9 @Override
10 public void primitiveOperation2() {
11 System.out.println("A实现2.。。。");
12
13 }
14
15 }
ConcreteClassA
1 public class ConcreteClassB extends AbstractClass {
2
3 @Override
4 public void primitiveOperation1() {
5 System.out.println("B实现1.。。。");
6
7 }
8
9 @Override
10 public void primitiveOperation2() {
11 System.out.println("B实现2.。。。");
12
13 }
14
15 }
ConcreteClassB
public class TestTemplate {
public static void main(String[] args) {
AbstractClass cl = new ConcreteClassA();
cl.templateMethod();
cl = new ConcreteClassB();
cl.templateMethod();
}
}
结果:
A实现1.。。。
A实现2.。。。
B实现1.。。。
B实现2.。。。
test
模板方法模式是通过把不变行为搬到超类,去除子类中的重复代码,来体现它的优势。