定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为;
意图:定义了一个在操作中的一个算法框架,把一些步骤推迟到子类中去实现。模板方法模式让子类不需要改变算法结构而重定义特定的算法步骤;
比如
Work(){
① 准备
② 实施
③ 结束
}
可以将第二步实施声明为抽象方法,因为每个人实施的过程不同
1 public class TemplateDemo{
2 public static void main(String []atgs){
3 Teacher t1=new DBTeacher();
4 t1.work();
5 System.out.println();
6 Teacher t2=new CTeacher();
7 t2.work();
8 }
9 }
10
11 abstract class Teacher{
12 //老师工作的方法(它是一个流程)
13 public void prepared(){
14 System.out.println("准备好白板笔");
15 System.out.println("打开投影仪");
16 }
17
18 public void end(){
19 System.out.println("关闭投影仪");
20 System.out.println("锁门");
21 }
22 //抽象方法由其子类来实现
23 public abstract void teaching();
24 //模板方法
25 public void work(){
26 //1、授课前准备
27 prepared();
28 //2、进行授课
29 teaching();
30 //3、授课结束
31 end();
32 }
33 }
34
35 class DBTeacher extends Teacher{
36 //对抽象父类的抽象方法的实现
37 public void teaching(){
38 System.out.println("打开Oracle");
39 System.out.println("书写pl-sql指令");
40 System.out.println("优化ql指令");
41 }
42 }
43
44 class CTeacher extends Teacher{
45 //对抽象父类的抽象方法的实现
46 public void teaching(){
47 System.out.println("打开VM");
48 System.out.println("书写C指令");
49 System.out.println("调试C程序");
50 }
51 }