设计模式--模板方法

模板方法模式详解与示例

一、什么是模板方法模式?

模板方法模式(Template Method Pattern)是一种行为型设计模式。它定义了一个算法的骨架,并允许子类在不改变算法结构的情况下重新定义算法的某些步骤。这种模式通过模板方法来控制算法的整体流程,而具体的步骤由子类实现。

二、模板方法模式的组成

模板方法模式主要由以下角色组成:

  1. 抽象类(Abstract Class):定义算法的骨架,并包含一个或多个抽象方法,这些方法由子类实现。
  2. 具体类(Concrete Class):实现抽象类中定义的抽象方法,以完成算法的具体步骤。
三、模板方法模式的优点与缺点

优点

  • 代码复用:将通用算法逻辑放在抽象类中,实现了代码的复用。
  • 灵活性:允许子类实现特定的步骤而不改变整体算法的结构。
  • 易于维护:通过分离具体步骤的实现和整体流程,增强了代码的可读性和可维护性。

缺点

  • 增加了类的数量:使用模板方法模式通常需要创建多个具体子类,可能会增加系统的复杂度。
  • 继承局限:模板方法模式依赖于继承,可能会导致子类的灵活性受限。
四、模板方法模式的实现

下面通过一个简单的 Java 示例来演示模板方法模式的实现。假设我们有一个制作饮料的流程,不同的饮料有不同的制作步骤,但整体流程是一致的。

1. 定义抽象类

抽象类定义了制作饮料的模板方法,并包含一些抽象方法,具体步骤由子类实现:

public abstract class Beverage {
    // 模板方法,定义制作饮料的整体流程
    public final void prepareRecipe() {
        boilWater();
        brew();
        pourInCup();
        addCondiments();
    }

    // 具体方法
    private void boilWater() {
        System.out.println("Boiling water");
    }

    private void pourInCup() {
        System.out.println("Pouring into cup");
    }

    // 抽象方法,由子类实现
    protected abstract void brew();
    protected abstract void addCondiments();
}

2. 实现具体类

具体类实现了抽象类中定义的抽象方法,以完成具体的制作步骤:

public class Tea extends Beverage {
    @Override
    protected void brew() {
        System.out.println("Steeping the tea");
    }

    @Override
    protected void addCondiments() {
        System.out.println("Adding lemon");
    }
}

public class Coffee extends Beverage {
    @Override
    protected void brew() {
        System.out.println("Dripping coffee through filter");
    }

    @Override
    protected void addCondiments() {
        System.out.println("Adding sugar and milk");
    }
}

3. 测试模板方法模式

下面的代码演示了如何使用模板方法模式制作饮料:

public class Main {
    public static void main(String[] args) {
        Beverage tea = new Tea();
        tea.prepareRecipe();

        System.out.println();

        Beverage coffee = new Coffee();
        coffee.prepareRecipe();
    }
}

 输出

Boiling water
Steeping the tea
Pouring into cup
Adding lemon

Boiling water
Dripping coffee through filter
Pouring into cup
Adding sugar and milk
五、总结

模板方法模式是一种强大的设计模式,用于定义算法的整体结构并将具体步骤延迟到子类中实现。它通过模板方法来控制算法的整体流程,同时允许子类实现特定的步骤。

相关推荐

  1. 模板方法设计模式

    2024-07-21 11:16:06       17 阅读
  2. 设计模式--模板方法

    2024-07-21 11:16:06       17 阅读
  3. 设计模式-模板方法模式

    2024-07-21 11:16:06       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 11:16:06       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 11:16:06       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 11:16:06       45 阅读
  4. Python语言-面向对象

    2024-07-21 11:16:06       55 阅读

热门阅读

  1. 使用winget安装git

    2024-07-21 11:16:06       20 阅读
  2. [C/C++入门][for]22、输出奇偶数之和

    2024-07-21 11:16:06       17 阅读
  3. 科普文:CodeReview小结

    2024-07-21 11:16:06       18 阅读
  4. c++第三课:类和对象

    2024-07-21 11:16:06       14 阅读
  5. 一种Android系统双屏异显的两路音频实现方法

    2024-07-21 11:16:06       12 阅读
  6. windows核心编程:第3章内核对象防止多开

    2024-07-21 11:16:06       17 阅读
  7. 关于限定视频码率的问题

    2024-07-21 11:16:06       14 阅读