模板设计模式

模板设计模式

概述

模板设计模式定义:  定义一个操作中的算法骨架, 将步骤延迟到子类中.
模板设计模式是一种**行为设计模式**, 一般是准备一个抽象类, 将部分逻辑以具体方法或者具体的构造函数实现,  然后声明一些抽象方法, 这样可以强制子类实现剩余的逻辑.  不同的子类以不同的方式实现这些抽象方法. 从而对剩余的逻辑有不同的实现. 这就是模板设计模式能达成的功能.
适用于一些复杂操作进行步骤分割, 抽取公共部分由抽象父类实现, 将不同的部分在父类中定义抽象实现, 而将具体实现过程由子类完成.  对于整体步骤很固定,  但是某些部分易变, 可以将易变的部分抽取出来, 供子类实现.

角色:
	抽象类:  实现模板方法, 定义算法骨架
	具体类:  实现抽象类中的抽象方法, 完成特定的算法.

代码演示

public class TemplatePatternDemo {
    public static void main(String[] args) {
        new Coffee().doMake("把咖啡放入杯中", "加牛奶和糖");
        System.out.println();
        new Tea().make();
    }
}

// 冲饮料
abstract class Beverages {

    public final void make() {
        boilWater();            // 1. 把水烧开
        pourInCup();            // 2. 把杯子准备好, 原材料放到杯中.
        brew();                 // 3. 用水冲泡
        addIngredients();       // 4. 添加配料
    }

    protected abstract void pourInCup();
    protected abstract void addIngredients();

    private void boilWater() {
        System.out.println("1, 烧开水,烧到100度可以起锅了");
    }
    private void brew() {
        System.out.println("3. 将开水放入杯中进行冲泡");
    }
}

// 冲咖啡
class Coffee extends Beverages {

    private String secondStep;
    private String fourthStep;

    public void doMake(String secondStep, String fourthStep) {
        this.secondStep = secondStep;
        this.fourthStep = fourthStep;
        make();
    }

    @Override
    protected void pourInCup() {
        System.out.println("2. " + secondStep);
    }

    @Override
    protected void addIngredients() {
        System.out.println("4. " + fourthStep);
    }
}

// 喝茶
class Tea extends Beverages {
    @Override
    protected void pourInCup() {
        System.out.println("2. 把茶叶放入杯中");
    }
    @Override
    protected void addIngredients() {
        System.out.println("4. 添加蜂蜜");
    }
}

运行结果如下
运行结果

参考文章

java模板设计模式 - yefengyu - 博客园
java中模板设计模式_java_yk_good的博客-CSDN博客
spring源码解读之 JdbcTemplate源码_Java_荒野哞的专栏-CSDN博客

原文地址:https://www.cnblogs.com/bobo132/p/13950337.html