20模板方法模式TemplateMethod

1、什麼是模板方法模式算法

  Template Method模式也叫模板方法模式,是 行爲模式之一,它把具備特定步驟算法中的某些 必要的處理委讓給抽象方法,經過子類繼承對抽 象方法的不一樣實現改變整個算法的行爲。測試

 

2、模板方法模式的應用場景this

  Template Method模式通常應用在具備如下條件 的應用中:spa

    - 具備統一的操做步驟或操做過程code

    - 具備不一樣的操做細節blog

    - 存在多個具備一樣操做步驟的應用場景,但某些具體的操做細節卻各不相同繼承

 

3、模板方法模式的結構模板

 

4、模板方法模式的角色和職責class

  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 }
相關文章
相關標籤/搜索