模板方法模式

Posted chao-zjj

tags:

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

模板方法的基本实现

思想

1、一份算法框架,大家共同遵守

2、 算法框架中分离出变与不变的部分

3、将变化的算法,延迟实现(交由具体的子类实现)

基本实现

1、用一个抽象基类,一个public final方法定义好算法框架

2、不变的部分,用private方法加以实现。(基本方法)

3、变化的部分,用protected abstract加以定义(抽象方法)

使用

1、面向接口编程

2、传入实际的实现子类给接口变量

3、接口变量调用框架方法

优点

1.封装性好

2.复用性好

3.屏蔽细节

4.便于维护

/**
 * 抽象基类,为所有子类提供一个算法框架
 * 
 * 提神饮料
 * 
 * @since 2018年12月19日 上午11:44:38
 * @author xuchao
 *
 */
public abstract class RefreshBeverage {
    
    /**
     * 制备饮料的模板方法
     * 封装了所有子类共同遵循的算法框架
     */
    public final void prepareBeverageTemplate() {
        // 步骤1 将水煮沸,公共方法
        boilWater();

        // 步骤2 泡制饮料,由子类决定具体细节
        brew();

        // 步骤3 将饮料倒入杯中,公共方法
        pourInCup();

        // 步骤4 加入调味料,由子类决定具体细节
        addCondiments();

    }

    /**
     * 步骤4 加入调味料,抽象的基本方法
     */
    protected abstract void addCondiments();

    /**
     * 步骤3 将饮料倒入杯中
     */
    private void pourInCup() {
        // TODO Auto-generated method stub
        System.out.println("将饮料倒入杯中");
    }

    /**
     * 步骤2 泡制饮料,抽象的基本方法
     */
    protected abstract void brew();

    /**
     * 步骤1 将水煮沸
     */
    private void boilWater() {
        // TODO Auto-generated method stub
        System.out.println("将水煮沸");
    }
}

 

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

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

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

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

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

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率

设计模式模板方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )