模板模式

Posted guomomo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板模式相关的知识,希望对你有一定的参考价值。

介绍

流程标准化,但具体的原料(功能)自己实现。
如:泡茶有以下四个步骤: 1、 烧开水; 2 、把茶放到水杯中; 3、倒入开水; 4、可以什么都不干。
  泡咖啡也有以下四个步骤: 1、 烧开水; 2、 把咖啡放到水杯中; 3、倒入开水; 4、 加入糖和牛奶。

程序

public abstract class AbstractTemplate {

    public final void template(){
        this.boilWater();
        this.putIntoCup();
        this.addHotWater();
        if (isCustomered()) {
            // 加入调料
            this.addCondiments();

        }

    }
    private void boilWater() {
        System.out.println("烧开水");
    }

    protected abstract void putIntoCup();

    private void addHotWater() {
        System.out.println("加水");
    }
    protected abstract void addCondiments();
    // 钩子函数
    protected boolean isCustomered() {
        return true;
    }
}

因为流程中某一个环节可以省略,我们可以增加钩子函数来确认是否需要定制
```java
public class Coffee extends AbstractTemplate{
protected void putIntoCup() {
System.out.println("把咖啡放水杯里");
}

protected void addCondiments() {
    System.out.println("加糖加奶");
}

}
java
public class Tea extends AbstractTemplate{
protected void putIntoCup() {
System.out.println("把茶叶放水杯里");
}

protected void addCondiments() {
    System.out.println("加点***");
}

protected boolean isCustomered() {
    return false;
}

}
测试下:java
// 咖啡制作
AbstractTemplate coffee = new Coffee();
coffee.template();
System.out.println("-------------------");
// 茶制作
AbstractTemplate tea = new Tea();
tea.template();
```
结果:
技术图片

以上是关于模板模式的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段1——vue主模板

VSCode自定义代码片段2——.vue文件的模板

VSCode自定义代码片段(vue主模板)

Eclipse 中的通用代码片段或模板

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段

vscode代码片段生成vue模板