20模板方法模式TemplateMethod

一、什么是模板方法模式

  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 }

猜你喜欢

转载自www.cnblogs.com/justdoitba/p/9034799.html