(行为型模式)模板模式

49 阅读1分钟

前言

模板模式是软件设计模式的一种,其中一个抽象类的算法的步骤由其子类实现。这样,子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。

示例

饮料冲泡方法的模板

public abstract class BeverageMakingTemplate {
    // 冲泡饮料的模板方法
    public final void makeBeverage() {
        boilWater();
        brew();
        pourInCup();
        addCondiments();
    }

    // 烧开水
    public void boilWater() {
        System.out.println("烧水中...");
    }

    // 冲泡
    public abstract void brew();

    // 倒入杯子
    public void pourInCup() {
        System.out.println("倒入杯中");
    }

    // 加调料
    public abstract void addCondiments();
}

咖啡冲泡实现

public class Coffee  extends BeverageMakingTemplate{
    @Override
    public void brew() {
        System.out.println("冲泡咖啡...");

    }

    @Override
    public void addCondiments() {
        System.out.println("添加方糖和牛奶");
    }
}

茶冲泡方法实现

public class Tea extends BeverageMakingTemplate {
    @Override
    public void brew() {
        System.out.println("冲泡茶...");
    }

    @Override
    public void addCondiments() {
        System.out.println("加点柠檬");
    }
}

使用

public class Demo {

    public static void main(String[] args) {
        BeverageMakingTemplate coffee = new Coffee();
        coffee.makeBeverage();
        BeverageMakingTemplate tea = new Tea();
        tea.makeBeverage();
    }
}

优缺点

优点

  • 封装了不变部分,扩展可变部分
  • 提取公共部分代码,便于维护
  • 行为由父类控制,子类实现

缺点

  • 每个不同的实现都需要一个子类来实现,导致类的个数增加,系统变得更加庞大