设计模式之模板模式TemplatePattern(五)

本文介绍了Java中的模板模式,通过DishTemplate抽象类定义烹饪步骤,子类如DishEggsWithTomato和DishOnionWithTofu重写具体操作。还展示了Spring框架中的RestTemplate作为另一个使用模板模式的实例。
摘要由CSDN通过智能技术生成

一、模板模式介绍

模板方法模式(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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐泗空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值