📓 Archive

  • Pricing
  • Chess
  • Syntax
  • 22-TEMPLATE

    FGJ: Create:2024/01/25 Update: (2024-10-24)

    模板模式 #

    • 描述 #

      在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

    • UML #

    • 代码实现 #

      public class Main {
          public static void main(String[] args) {
      
              Game game = new Cricket();
              game.play();
      
              game = new Football();
              game.play();
          }
      }
      
      public abstract class Game {
          abstract void initialize();
          abstract void startPlay();
          abstract void endPlay();
          //模板
          public final void play(){
              //初始化游戏
              initialize();
              //开始游戏
              startPlay();
              //结束游戏
              endPlay();
          }
      }
      
      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!");
          }
      }
      
      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!");
          }
      }
      

    • Reference #


    comments powered by Disqus