【行为型】模板方法模式
定义
1
2
3
4
5
定义:基类定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。
模板方法模式角色:
1.抽象类:实现模板方法,定义算法骨架
2.具体类:实现抽象类中的抽象方法
UML图
1
2
3
4
5
6
7
8
9
10
11
_ _ _ _ _ _ _ _ _ _ _ _
| |
| TemplateAbstractClass |
|_ _ _ _ _ _ _ _ _ _ _ _|
↑
|
┌--------------------------┐
_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _
| | | |
| ConcreteClassA | | ConcreteClassB |
|_ _ _ _ _ _ _ _ _ _| |_ _ _ _ _ _ _ _ _ _|
代码
1
2
3
4
5
6
7
8
9
10
11
12
public abstract class Swim{
public abstract void warmUp();
public void do(){
warmUp();
System.out.println("Swimming now...");
}
}
1
2
3
4
5
6
7
8
9
public A extends Swim{
@Override
public void warmUp(){
System.out.println("Run a few minutes...");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public B extends Swim{
@Override
public void warmUp(){
System.out.println("Ride bike...");
}
} ***
public class Client{
public static void main(String[] args){
Swim a = new A();
a.do();
Swim b = new B();
b.do();
}
}
运行结果:
Run a few minutes...
Swimming now...
Ride bike...
Swimming now...