模闆方法模式(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
模闆方法模式是通過把不變行為搬到超類,去除子類中的重複代碼,來展現它的優勢。