【Java】23种设计模式——14.模板方法模式
定义
模板方法模式(Template Method Pattern),:这是一种行为型设计模式,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中实现。
定义角色
- 抽象类(AbstractClass):定义算法骨架和基本操作
- 具体类(ConcreteClass):实现抽象类中的抽象操作
应用场景
- 一次性事项算法不变的部分,将可变行为留给子类实现
- 控制子类扩展,只允许拓展特定操作。
- 多个类包含相同算法,但某些步骤实现不同。
使用
游戏框架模板方法。
-
抽象类 (游戏抽象方法)、
/** * 测试模板模式 * @Author:lyj * @Date:2025/5/20 10:29 */ public class TestTemplate { /** * 测试模板模式 * @author lyj * @date 2025-05-20 */ @Test public void test(){ // 板球 Game game1 = new Crickeet(); game1.play(); System.out.println("======="); // 足球 Game game2 = new FootBall(); game2.play(); } } -
具体类 (板球游戏,足球游戏)
/** * 模板模式-具体类: 板球 * @Author:lyj * @Date:2025/5/20 10:21 */ public class Crickeet extends Game{ /** * 游戏初始化 */ @Override public void initialize() { System.out.println("初始化板球游戏..."); } /** * 开始游戏 */ @Override public void startPlay() { System.out.println("开始板球游戏..."); } /** * 结束游戏 */ @Override public void endPlay() { System.out.println("结束板球游戏..."); } }/** * 模板模式-具体类:足球游戏 * @Author:lyj * @Date:2025/5/20 10:26 */ public class FootBall extends Game { /** * 初始化游戏 */ @Override public void initialize() { System.out.println("初始化足球游戏……"); } /** * 开始游戏 */ @Override public void startPlay() { System.out.println("开始足球游戏……"); } /** * 结束游戏 */ @Override public void endPlay() { System.out.println("结束足球游戏……"); } }
客户端运行:
// 板球
Game game1 = new Crickeet();
game1.play();
System.out.println("=======");
// 足球
Game game2 = new FootBall();
game2.play();
运行结果:

有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。

浙公网安备 33010602011771号