1.定义
Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。
2.模板方法的应用场景
Template Method模式一般应用在具有以下条件的应用中:
- 具有统一的操作步骤或操作过程
- 具有不同的操作细节
- 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
3.模板方法模式的角色和职责
- AbstractClass--抽象类的父类
- ConcreteClass--具体的实现类
- templateMethod()--模板方法
- method1()和method2()--具体步骤方法
4.代码演示
package test.com.templateMethod; /* * Template Method--抽象类 */ public abstract class MakeCar { //组装车头 public abstract void makehead(); //组装车身 public abstract void makebody(); //组装车尾 public abstract void maketail(); //模板方法 public void make() { this.makehead(); this.makebody(); this.maketail(); } }
package test.com.templateMethod; /* * ConcreteClass */ public class MakeBuss extends MakeCar { @Override public void makehead() { System.out.println("buss:组装车头"); } @Override public void makebody() { System.out.println("buss:组装车身"); } @Override public void maketail() { System.out.println("buss:组装车尾"); } }
package test.com.templateMethod; /* * ConcreteClass */ public class MakeJeep extends MakeCar { @Override public void makehead() { System.out.println("jeep:组装车头"); } @Override public void makebody() { System.out.println("jeep:组装车身"); } @Override public void maketail() { System.out.println("jeep:组装车尾"); } }
package test.com.templateMethod; /* * 测试类 */ public class MainClass { public static void main(String[] args) { MakeCar makeCar = new MakeBuss(); makeCar.make(); System.out.println("--------------------"); MakeCar makeCar2 = new MakeJeep(); makeCar2.make(); } }