模板方法模式

来源:互联网 发布:阿里云备份恢复要多久 编辑:程序博客网 时间:2024/06/06 06:59
一、什么是模板方法模式

    Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。


二、模板方法模式的应用场景
Template Method模式一般应用在具有以下条件的应用中:
- 具有统一的操作步骤或操作过程
- 具有不同的操作细节
- 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同


三、模板方法模式的角色和职责

    AbstractClass:抽象类的父类

    ConcreteClass:具体的实现子类    

    templateMethod():模板方法

    method1()与method2():具体步骤方法



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();       }   }  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();       }   } 


0 0