设计模式(六):模板方法模式(行为型模式)

Template Method,模板方法:定义一个操作中的算法的骨架,而将一
些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即
可以重定义该算法得某些特定步骤。

举例说明

奶茶制作过程,第一步加牛奶,第二步加糖,第三步加其他配料。第三步对于不同口味的奶茶,可以添加各种配料,那么第三步的方法就可以抽象为一个模板方法,让子类来各自实现。这里给代码。

奶茶基类MilkTea.java

package com.figo.study2024.pattern.template;

/**
 * @ClassName:MilkTea
 * @PackageName:com.figo.study2024.pattern.template
 * @Description:奶茶基类
 * @Date:2024/2/20 11:39
 * @Author:figo
 */
public abstract class MilkTea {
    /**
     * 制作奶茶总体流程不变
     */
    public void makeMilk()
    {
        addMilk();
        addSuger();
        addOther();
    }
    public void addMilk()
    {
        System.out.println("第一步添加牛奶");
    }
    public void addSuger()
    {
        System.out.println("第二步添加糖");
    }

    /**
     * 添加配料,作为一个模板方法让子类自行实现
     */
    public abstract void addOther();
}

珍珠奶茶子类PearlMilkTea.java

package com.figo.study2024.pattern.template;

/**
 * @ClassName:PearlMilkTea
 * @PackageName:com.figo.study2024.pattern.template
 * @Description:珍珠奶茶类描述
 * @Date:2024/2/20 12:50
 * @Author:figo
 */
public class PearlMilkTea extends MilkTea{
    @Override
    public void addOther() {
        System.out.println("第三步添珍珠");
    }
}

红豆奶茶子类RedBeanMilkTea.java

package com.figo.study2024.pattern.template;

/**
 * @ClassName:RedBeanMilkTea
 * @PackageName:com.figo.study2024.pattern.template
 * @Description:红豆奶茶类描述
 * @Date:2024/2/20 12:44
 * @Author:figo
 */
public class RedBeanMilkTea extends MilkTea{
    @Override
    public void addOther() {
        System.out.println("第三步添红豆");
    }
}

客户端调用:

package com.figo.study2024.pattern.template;

/**
 * @ClassName:PatterTest
 * @PackageName:com.figo.study2024.pattern.template
 * @Description:客户端调用类描述
 * @Date:2024/2/20 12:53
 * @Author:figo
 */
public class PatterTest {
    public static void main(String[] args) {
        //制作红豆奶茶
        MilkTea redBeanMilkTea=new RedBeanMilkTea();
        redBeanMilkTea.makeMilk();
        //制作珍珠奶茶
        MilkTea pearlMilkTea=new PearlMilkTea();
        pearlMilkTea.makeMilk();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值