北风设计模式课程---25、模板方法模式
一、总结
一句话总结:
模板方法就是指定算法步骤,具体不同的子类实现不同的算法
1、什么是模板方法模式?
指定算法步骤,具体不同的子类实现不同的算法:它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。
Template Method模式也叫模板方法模式,是
行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。
2、模板方法模式的应用场景?
- 具有统一的操作步骤或操作过程:在模板类中
- 具有不同的操作细节:在具体的类中
- 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
3、模板方法模式的角色和职责?
AbstractClass:抽象类的父类:
ConcreteClass:具体的实现子类:
templateMethod():模板方法:MakeCar.java
method1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java
4、模板方法模式 为什么叫 模板方法模式?
模板方法就是指定算法步骤,具体不同的子类实现不同的算法
/* * 组装车 */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(); }}
二、内容在总结中
1、相关知识
AbstractClass:抽象类的父类:
ConcreteClass:具体的实现子类:templateMethod():模板方法:MakeCar.javamethod1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java
2、代码
AbstractClass:抽象类的父类:
ConcreteClass:具体的实现子类:
templateMethod():模板方法:MakeCar.java
MakeCar.java
/* * 组装车 */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(); }}
method1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java
MakeBus.java、
public class MakeBus extends MakeCar { public void makeBody() { System.out.println("bus:组装车身"); } public void makeHead() { System.out.println("bus:组装车头"); } public void makeTail() { System.out.println("bus:组装车尾"); }}
MakeJeep.java、
public class MakeJeep extends MakeCar { public void makeBody() { System.out.println("jeep:组装车身"); } public void makeHead() { System.out.println("jeep:组装车头"); } public void makeTail() { System.out.println("jeep:组装车尾"); }}
MakeKa.java
public class MakeKa extends MakeCar { public void makeBody() { System.out.println("ka:组装车身"); } public void makeHead() { System.out.println("ka:组装车头"); } public void makeTail() { System.out.println("ka:组装车尾"); } }
客户端实现:
MainClass.java
public class MainClass { public static void main(String[] args) { MakeCar bus = new MakeBus();// bus.makeHead();// bus.makeBody();// bus.makeTail(); bus.make(); System.out.println("-------------------"); MakeCar jeep = new MakeJeep();// jeep.makeHead();// jeep.makeBody();// jeep.makeTail(); jeep.make(); System.out.println("-------------------"); MakeCar ka = new MakeKa(); ka.make(); }}