鍍金池/ 教程/ Java/ Java模板模式
Java前端控制器模式
Java工廠設(shè)計模式
Java抽象工廠模式
Java觀察者模式
Java門面模式(或外觀模式)
Java備忘錄模式
Java MVC模式
Java單例模式
Java傳輸對象模式
Java迭代器模式
Java責(zé)任鏈模式
Java命令模式
Java原型模式
Java解釋器模式
Java適配器模式
Java狀態(tài)模式
Java中介者模式(Mediator Pattern)
Java攔截過濾器模式
Java策略模式
Java組合模式
Java業(yè)務(wù)代理模式
Java裝飾模式
Java模板模式
Java橋接模式
Java過濾器模式(條件模式)
Java享元模式(Flyweight Pattern)
Java建造者(Builder)模式
Java設(shè)計模式
Java空對象模式
Java數(shù)據(jù)訪問對象模式
Java訪問者模式
Java組合實體模式
Java服務(wù)定位器模式

Java模板模式

在模板模式中,抽象類公開了定義的方法/模板來執(zhí)行它的方法。 它的子類可以根據(jù)需要重寫方法實現(xiàn),但調(diào)用的方式與抽象類定義的方式相同。 此模式屬于行為模式類別。

實現(xiàn)實例

在這個實現(xiàn)實例中,將創(chuàng)建一個Game抽象類,它定義了一個模板方法設(shè)置為final的操作,因此它不能被覆蓋。 CricketFootball 是擴(kuò)展Game并覆蓋它的方法的具體類。

TemplatePatternDemo是一個演示類,將使用Game演示使用模板模式。

模板模式示例的結(jié)構(gòu)如下圖所示 -

第1步

創(chuàng)建一個模板方法為final的抽象類。
Game.java

public abstract class Game {
   abstract void initialize();
   abstract void startPlay();
   abstract void endPlay();

   //template method
   public final void play(){

      //initialize the game
      initialize();

      //start game
      startPlay();

      //end game
      endPlay();
   }
}

第2步

創(chuàng)建擴(kuò)展上述類的具體類,其代碼如下 -
Cricket.java

public class Cricket extends Game {

   @Override
   void endPlay() {
      System.out.println("Cricket Game Finished!");
   }

   @Override
   void initialize() {
      System.out.println("Cricket Game Initialized! Start playing.");
   }

   @Override
   void startPlay() {
      System.out.println("Cricket Game Started. Enjoy the game!");
   }
}

Football.java

public class Football extends Game {

   @Override
   void endPlay() {
      System.out.println("Football Game Finished!");
   }

   @Override
   void initialize() {
      System.out.println("Football Game Initialized! Start playing.");
   }

   @Override
   void startPlay() {
      System.out.println("Football Game Started. Enjoy the game!");
   }
}

第3步

使用游戲的模板方法-play()演示一個定義的玩游戲的方式。
TemplatePatternDemo.java

public class TemplatePatternDemo {
   public static void main(String[] args) {

      Game game = new Cricket();
      game.play();
      System.out.println();
      game = new Football();
      game.play();
   }
}

第4步

驗證輸出,執(zhí)行上面的代碼得到以下結(jié)果 -

Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!

Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!