【设计模式】行为型模式1——模板方法模式

这篇博客介绍了一个使用模板方法设计模式的案例,通过抽象类`SoyaMilk`定义豆浆制作的基本流程,包括选择豆子、添加材料和浸泡等步骤,并将添加材料的步骤留待子类实现。`BlackBeanSoyaMilk`和`PureSoyaMilk`两个子类分别重定义了添加材料的步骤,实现了不同口味豆浆的制作,展示了模板方法模式在不改变算法结构的情况下如何允许子类定制部分行为。
摘要由CSDN通过智能技术生成

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

public abstract class SoyaMilk {

    // 通过final可选择是否让子类继承
    public final void complete(){
        select();
        add();
        soak();
        System.out.println("4.制作完成......");
    }

    private void select(){
        System.out.println("1.选择新鲜的黄豆......");
    }

    // 空实现,类似接口适配器默认方法,子类选择重写,这个方法称为钩子方法
    public void add(){

    }

    private void soak(){
        System.out.println("3.浸泡......");
    }

    public abstract void pack();
}

public class BlackBeanSoyaMilk extends SoyaMilk{

    @Override
    public void add() {
        System.out.println("2.添加黑豆......");
    }

    @Override
    public void pack() {
        System.out.println("4.打包黑豆浆......");
    }
}
public class PureSoyaMilk extends SoyaMilk{
    @Override
    public void pack() {
        System.out.println("4.打包纯豆浆......");
    }
}

测试类

public class Test {

    public static void main(String[] args) {
        SoyaMilk blackBeanSoyaMilk = new BlackBeanSoyaMilk();
        blackBeanSoyaMilk.complete();

        System.out.println("=======================================");

        SoyaMilk pureSoyaMilk = new PureSoyaMilk();
        pureSoyaMilk.complete();
    }
}

结果

模板方法结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值