找回密码
 立即注册
首页 业界区 安全 【Java】23种设计模式——14.模板方法模式 ...

【Java】23种设计模式——14.模板方法模式

郁梓馨 2025-6-20 15:22:56
定义

模板方法模式(Template Method Pattern),:这是一种行为型设计模式,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中实现。
定义角色


  • 抽象类(AbstractClass):定义算法骨架和基本操作
  • 具体类(ConcreteClass):实现抽象类中的抽象操作
应用场景


  • 一次性事项算法不变的部分,将可变行为留给子类实现
  • 控制子类扩展,只允许拓展特定操作。
  • 多个类包含相同算法,但某些步骤实现不同。
使用

游戏框架模板方法。

  • 抽象类 (游戏抽象方法)、
    1. /**
    2. * 测试模板模式
    3. * @Author:lyj
    4. * @Date:2025/5/20 10:29
    5. */
    6. public class TestTemplate {
    7.     /**
    8.      * 测试模板模式
    9.      * @author lyj
    10.      * @date 2025-05-20
    11.      */
    12.     @Test
    13.     public void test(){
    14.         // 板球
    15.         Game game1 = new Crickeet();
    16.         game1.play();
    17.         System.out.println("=======");
    18.         // 足球
    19.         Game game2 = new FootBall();
    20.         game2.play();
    21.     }
    22. }
    复制代码
  • 具体类 (板球游戏,足球游戏)
    1. /**
    2. * 模板模式-具体类: 板球
    3. * @Author:lyj
    4. * @Date:2025/5/20 10:21
    5. */
    6. public class Crickeet extends Game{
    7.     /**
    8.      * 游戏初始化
    9.      */
    10.     @Override
    11.     public void initialize() {
    12.         System.out.println("初始化板球游戏...");
    13.     }
    14.     /**
    15.      * 开始游戏
    16.      */
    17.     @Override
    18.     public void startPlay() {
    19.         System.out.println("开始板球游戏...");
    20.     }
    21.     /**
    22.      * 结束游戏
    23.      */
    24.     @Override
    25.     public void endPlay() {
    26.         System.out.println("结束板球游戏...");
    27.     }
    28. }
    复制代码
    1. /**
    2. * 模板模式-具体类:足球游戏
    3. * @Author:lyj
    4. * @Date:2025/5/20 10:26
    5. */
    6. public class FootBall extends Game {
    7.     /**
    8.      * 初始化游戏
    9.      */
    10.     @Override
    11.     public void initialize() {
    12.         System.out.println("初始化足球游戏……");
    13.     }
    14.     /**
    15.      * 开始游戏
    16.      */
    17.     @Override
    18.     public void startPlay() {
    19.         System.out.println("开始足球游戏……");
    20.     }
    21.     /**
    22.      * 结束游戏
    23.      */
    24.     @Override
    25.     public void endPlay() {
    26.         System.out.println("结束足球游戏……");
    27.     }
    28. }
    复制代码
客户端运行:
  1. // 板球
  2. Game game1 = new Crickeet();
  3. game1.play();
  4. System.out.println("=======");
  5. // 足球
  6. Game game2 = new FootBall();
  7. game2.play();
复制代码
运行结果:
1.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册