模板方法

一、模式定义

1、抽象模板类

 1 public abstract class AbstractCar {
 2 
 3     /**
 4      * 汽车启动
 5      */
 6     abstract void start();
 7 
 8     /**
 9      * 汽车加速
10      */
11     abstract void accelerate();
12 
13     /**
14      * 汽车直行
15      */
16     abstract void straight();
17 
18     /**
19      * 汽车减速
20      */
21     abstract void slowDown();
22 
23     /**
24      * 靠边停车
25      */
26     abstract void stop();
27 
28     /**
29      * 汽车运动过程
30      */
31     public final void run() {
32         this.start();
33         this.accelerate();
34         this.straight();
35         this.slowDown();
36         this.stop();
37     }
38 }

2、具体模板类

 1 public class Rav4 extends AbstractCar {
 2 
 3     /**
 4      * 汽车启动
 5      */
 6     @Override
 7     void start() {
 8         System.out.println("丰田荣放RAV4--启动");
 9     }
10 
11     /**
12      * 汽车加速
13      */
14     @Override
15     void accelerate() {
16         System.out.println("丰田荣放RAV4--加速");
17     }
18 
19     /**
20      * 汽车直行
21      */
22     @Override
23     void straight() {
24         System.out.println("丰田荣放RAV4--直行");
25     }
26 
27     /**
28      * 汽车减速
29      */
30     @Override
31     void slowDown() {
32         System.out.println("丰田荣放RAV4--减速");
33     }
34 
35     /**
36      * 靠边停车
37      */
38     @Override
39     void stop() {
40         System.out.println("丰田荣放RAV4--停车");
41     }
42 }
 1 public class Cross extends AbstractCar {
 2 
 3     /**
 4      * 汽车启动
 5      */
 6     @Override
 7     void start() {
 8         System.out.println("丰田卡罗拉CROSS--启动");
 9     }
10 
11     /**
12      * 汽车加速
13      */
14     @Override
15     void accelerate() {
16         System.out.println("丰田卡罗拉CROSS--加速");
17     }
18 
19     /**
20      * 汽车直行
21      */
22     @Override
23     void straight() {
24         System.out.println("丰田卡罗拉CROSS--直行");
25     }
26 
27     /**
28      * 汽车减速
29      */
30     @Override
31     void slowDown() {
32         System.out.println("丰田卡罗拉CROSS--减速");
33     }
34 
35     /**
36      * 靠边停车
37      */
38     @Override
39     void stop() {
40         System.out.println("丰田卡罗拉CROSS--停车");
41     }
42 }

3、测试

 1 public class Main {
 2 
 3     public static void main(String[] args) {
 4         System.out.println("================ RAV4 ================");
 5         AbstractCar rav4 = new Rav4();
 6         rav4.run();
 7         System.out.println();
 8         System.out.println("================ CROSS ================");
 9         AbstractCar cross = new Cross();
10         cross.run();
11     }
12 }

结果:

================ RAV4 ================
丰田荣放RAV4--启动
丰田荣放RAV4--加速
丰田荣放RAV4--直行
丰田荣放RAV4--减速
丰田荣放RAV4--停车

================ CROSS ================
丰田卡罗拉CROSS--启动
丰田卡罗拉CROSS--加速
丰田卡罗拉CROSS--直行
丰田卡罗拉CROSS--减速
丰田卡罗拉CROSS--停车

 

posted @ 2020-10-13 19:38  西北-孤狼  阅读(84)  评论(0)    收藏  举报