郁梓馨 发表于 2025-6-20 15:22:56

【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();运行结果:


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 【Java】23种设计模式——14.模板方法模式