Java模板模式

/ / Java模板模式
模板方法(Template Method)模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

模板方法实例

创建一个 Game 抽象类,该类定义了将模板方法设置为final的操作,以使其无法被覆盖。 Cricket和Football是扩展Game并覆盖其方法的具体类。

无涯教程的演示类 TemplatePatternDemo 将使用 Game 演示模板模式的使用。

链接:https://www.learnfk.comhttps://www.learnfk.com/design-pattern/template-pattern.html

来源:LearnFk无涯教程网

Template Pattern UML Diagram

第1步 -  使用最终的模板方法创建一个抽象类。

Game.java

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

   //模板方法
   public final void play(){

      //调用初始化方法
      initialize();

      //调用开始游戏方法
      startPlay();

      //调用结束游戏方法
      endPlay();
   }
}

第2步 -  创建扩展上述类的具体类。

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步 -  使用 Game 的模板方法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步 -  验证输出。

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!

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

TonyBai · Go语言进阶课 -〔Tony Bai〕

DeepSeek 应用开发实战 -〔云阳〕

Python工匠:案例、技巧与工程实践 -〔朱雷〕

云计算的必修小课 -〔吕蕴偲〕

讲好故事 -〔涵柏〕

实用密码学 -〔范学雷〕

系统性能调优必知必会 -〔陶辉〕

.NET Core开发实战 -〔肖伟宇〕

Android开发高手课 -〔张绍文〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者