Java模板模式及代码

意图

在父类中定义了算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤,这种类型的设计模式属于行为型模式。

主要解决的问题

  • 解决在多个子类中重复实现相同的方法的问题,通过将通用方法抽象到父类中来避免代码重复。

代码实现

父类

public abstract class Game {
   abstract void initialize();
   abstract void startPlay();
   abstract void endPlay();
 
   //模板
   public final void play(){
 
      //初始化游戏
      initialize();
 
      //开始游戏
      startPlay();
 
      //结束游戏
      endPlay();
   }
}

具体内容实现子类Cricket

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

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!");
   }
}

启动类

public class TemplatePatternDemo {
   public static void main(String[] args) {
 
      Game game = new Cricket();
      game.play();
      System.out.println();
      game = new Football();
      game.play();      
   }
}

参考资料:

模板模式 | 菜鸟教程 (runoob.com)

相关推荐
m0_748240251 分钟前
python轻量级框架-flask
开发语言·python·flask
论迹13 分钟前
【JavaEE】-- 多线程(初阶)2
java·开发语言·java-ee
桃子是唯一的水果22 分钟前
java 单例模式(Lazy Initialization)实现遍历文件夹下所有excel文件且返回其运行时间
java·单例模式·maven
+72023 分钟前
如何在java中用httpclient实现rpc post 请求
java·开发语言·rpc
ybq1951334543125 分钟前
javaEE-SpringBoot日志
java·spring boot·后端
火烧屁屁啦29 分钟前
【JavaEE进阶】图书管理系统 - 贰
java·spring
xzzd_jokelin29 分钟前
Spring AI 接入 DeepSeek:开启智能应用的新篇章
java·人工智能·spring·ai·大模型·rag·deepseek
学习两年半的Javaer32 分钟前
Rust语言基础知识详解【一】
开发语言·rust
PyAIGCMaster32 分钟前
50周学习go语言:第四周 函数与错误处理深度解析
开发语言·学习·golang
全栈开发圈33 分钟前
新书速览|Rust汽车电子开发实践
开发语言·rust·汽车