泊而至远

导航

 

定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为;

意图:定义了一个在操作中的一个算法框架,把一些步骤推迟到子类中去实现。模板方法模式让子类不需要改变算法结构而重定义特定的算法步骤;

比如

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 }

 

posted on 2016-03-18 21:25  积_跬步  阅读(218)  评论(0编辑  收藏  举报