设计模式:模板方法模式

概述

模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。模板方法模式通过将不变的行为搬移到超类,去除了子类中的重复代码。

使用场景

  1. 当要在多个子类中共享通用的算法结构时。
  2. 当希望子类在特定步骤上提供特定实现,但整体算法不变时。
  3. 当希望通过扩展子类来实现算法的某些步骤时。

结构

模板方法模式包含以下几个部分:

  1. 抽象类(AbstractClass):定义了算法的骨架,并包含一个模板方法和若干个抽象方法,供子类实现。
  2. 具体类(ConcreteClass):实现抽象类中定义的抽象方法,从而完成算法中相关步骤的具体实现。

代码实现

下面是一个 Java 实现模板方法模式的例子,展示了如何通过模板方法模式定义算法的骨架并在子类中实现具体步骤。

示例代码:

// 抽象类,定义了模板方法和基本操作
abstract class Game {
    // 模板方法
    public final void play() {
        initialize();
        startPlay();
        endPlay();
    }

    // 基本操作(抽象方法)
    abstract void initialize();
    abstract void startPlay();
    abstract void endPlay();
}

// 具体类,实现了基本操作
class Cricket extends Game {
    @Override
    void initialize() {
        System.out.println("Cricket Game Initialized! Start playing.");
    }

    @Override
    void startPlay() {
        System.out.println("Cricket Game Started. Enjoy the game!");
    }

    @Override
    void endPlay() {
        System.out.println("Cricket Game Finished!");
    }
}

class Football extends Game {
    @Override
    void initialize() {
        System.out.println("Football Game Initialized! Start playing.");
    }

    @Override
    void startPlay() {
        System.out.println("Football Game Started. Enjoy the game!");
    }

    @Override
    void endPlay() {
        System.out.println("Football Game Finished!");
    }
}

// 客户端代码
public class TemplateMethodPatternDemo {
    public static void main(String[] args) {
        Game game = new Cricket();
        game.play();
        System.out.println();
        game = new Football();
        game.play();
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值