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