一、什么是模板方法模式
Template Method模式也叫模板方法模式,是 行为模式之一,它把具有特定步骤算法中的某些 必要的处理委让给抽象方法,通过子类继承对抽 象方法的不同实现改变整个算法的行为。
二、模板方法模式的应用场景
Template Method模式一般应用在具有以下条件 的应用中:
- 具有统一的操作步骤或操作过程
- 具有不同的操作细节
- 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
三、模板方法模式的结构
四、模板方法模式的角色和职责
AbstractClass: 抽象类的父类
ConcreteClass: 具体的实现子类
templateMethod(): 模板方法
method1()与method2(): 具体步骤方法
做车
1 /* 2 * 组装车 3 */ 4 public abstract class MakeCar { 5 //组装车头 6 public abstract void makeHead(); 7 8 //组装车身 9 public abstract void makeBody();10 11 //组装车尾12 public abstract void makeTail();13 14 public void make() {15 this.makeHead();16 this.makeBody();17 this.makeTail();18 }19 }
做公交车
1 //做公交车 2 public class MakeBus extends MakeCar { 3 4 public void makeBody() { 5 System.out.println("bus:组装车身"); 6 } 7 8 public void makeHead() { 9 System.out.println("bus:组装车头");10 }11 12 public void makeTail() {13 System.out.println("bus:组装车尾");14 }15 }
组装Jeep车
1 //组装Jeep车 2 public class MakeJeep extends MakeCar { 3 4 public void makeBody() { 5 System.out.println("jeep:组装车身"); 6 } 7 8 public void makeHead() { 9 System.out.println("jeep:组装车头");10 }11 12 public void makeTail() {13 System.out.println("jeep:组装车尾");14 }15 }
做卡车
1 //做卡车 2 public class MakeKa extends MakeCar { 3 4 public void makeBody() { 5 System.out.println("ka:组装车身"); 6 } 7 8 public void makeHead() { 9 System.out.println("ka:组装车头");10 }11 12 public void makeTail() {13 System.out.println("ka:组装车尾");14 }15 }
测试
1 public class MainClass { 2 public static void main(String[] args) { 3 MakeCar bus = new MakeBus(); 4 // bus.makeHead(); 5 // bus.makeBody(); 6 // bus.makeTail(); 7 bus.make(); 8 9 System.out.println("-------------------");10 11 MakeCar jeep = new MakeJeep();12 // jeep.makeHead();13 // jeep.makeBody();14 // jeep.makeTail();15 jeep.make();16 17 System.out.println("-------------------");18 19 MakeCar ka = new MakeKa();20 ka.make();21 }22 }