模板方法
一、模式定义
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--停车

浙公网安备 33010602011771号