0%

设计模式-模板方法

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

类图

3JHQl6.md.png

实现

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();
}

}