设计模式之装饰者模式DecoratorPattern(四)

一、模板模式介绍

模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern), 在一个抽象类公开定义了执行它的方法的模板。它的子类可以更需要重写方法实现,但可以成为典型类中定义的方式进行。

模板模式适用于通用步骤的操作,比如做菜,不管你是西红柿炒鸡蛋,还是土豆炖牛肉实现步骤都是一样的,备料,做菜,上菜。
再比如投放系统,不管你是投放巨量引擎,广点通还是百度,前期工作实现步骤也都是一样的,配置物料信息,构建投放对象,投放广告。

二、代码实例

1、DishTemplate抽象类

package com.xu.demo.templatePattern;

/**
 * 做菜模板类
 * 用于定义做菜的执行步骤,所有菜都可以按照这种方式做菜
 *
 */
public abstract class DishTemplate {
    /**
     * 做菜执行步骤
     */
    public final void doDish() {
        this.preparation();
        this.doing();
        this.carriedDishes();
    }

    /**
     * 备料
     */
    public abstract void preparation();

    /**
     * 做菜
     */
    public abstract void doing();

    /**
     * 上菜
     */
    public abstract void carriedDishes();

}



 2、DishEggsWithTomato子类

package com.xu.demo.templatePattern;

/**
 * 西红柿炒鸡蛋
 *
 */
public class DishEggsWithTomato extends DishTemplate {
    @Override
    public void preparation() {
        System.out.println("准备西红柿鸡蛋...");
    }

    @Override
    public void doing() {
        System.out.println("开始炒西红柿鸡蛋...");
    }

    @Override
    public void carriedDishes() {
        System.out.println("西红柿鸡蛋装盘...");
    }
}


3、DishOnionWithTofu子类

package com.xu.demo.templatePattern;

/**
 * 小葱拌豆腐
 *
 */
public class DishOnionWithTofu extends DishTemplate {
    @Override
    public void preparation() {
        System.out.println("准备小葱豆腐...");
    }

    @Override
    public void doing() {
        System.out.println("开始炒小葱拌豆腐...");
    }

    @Override
    public void carriedDishes() {
        System.out.println("小葱拌豆腐装盘...");
    }
}

4、TempaltePattern类

package com.xu.demo.templatePattern;

/**
 * 模板模式
 * 抽象父类定义方法模板,子类自定义实现方式。
 *
 */
public class TempaltePattern {

    public static void main(String[] args) {

        System.out.println("----------西红柿炒鸡蛋----------");
        DishTemplate eggsWithTomato = new DishEggsWithTomato();
        eggsWithTomato.doDish();

        System.out.println("----------小葱拌豆腐----------");
        DishTemplate onionWithTofu = new DishOnionWithTofu();
        onionWithTofu.doDish();
    }
}

 运行结果:

三、Spring中的模板模式 

1、RestTemplate

相关推荐

  1. 设计模式装饰模式

    2024-04-30 06:44:06       38 阅读
  2. 设计模式装饰模式

    2024-04-30 06:44:06       38 阅读
  3. 装饰模式设计模式

    2024-04-30 06:44:06       3 阅读
  4. 装饰设计模式总结

    2024-04-30 06:44:06       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-30 06:44:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-30 06:44:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-30 06:44:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-30 06:44:06       20 阅读

热门阅读

  1. LeeCode 3130 DP / 组合数学

    2024-04-30 06:44:06       12 阅读
  2. 深度学习发展背后的人和事

    2024-04-30 06:44:06       14 阅读
  3. arco.design重写message实现只提示一次错误的功能

    2024-04-30 06:44:06       10 阅读
  4. SQL LPAD函数使用

    2024-04-30 06:44:06       13 阅读
  5. RTCRTC

    2024-04-30 06:44:06       8 阅读
  6. golang垃圾回收

    2024-04-30 06:44:06       11 阅读