Java常见的4种设计模式——模版模式

本文深入浅出地介绍了模板设计模式的原理与应用。通过泡茶和咖啡的例子,详细阐述了如何使用公共父类实现算法不变的部分,而让子类来实现可变的部分,从而达到代码复用和灵活性的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 模版设计模式通俗的说法:

  • 使用公共父类实现一个算法不变的部分,让子类来实现可变的部分。

  • 例子:泡一杯茶或者咖啡:

  • 第一步:将水煮沸 ------------------------不变的部分

  • 第二步:加入咖啡或者茶--------------------可变的部分

  • 第三步:将饮料导入杯子中------------------不变的部分

  • 第四步:根据咖啡或者茶加入不同的调味品-------可变的部分

  • 第一和第三步,不管泡茶还是咖啡都需要做的不变的部分,这个用公共父类来实现。

  • 第二和第四步,需要根据咖啡或者茶采取不同的做法,这个通过子类来实现。

/**
 * 模版设计模式通俗的说法:
 * 使用公共父类实现一个算法不变的部分,让子类来实现可变的部分。
 *
 * 例子:泡一杯茶或者咖啡:
 * 第一步:将水煮沸 ------------------------不变的部分
 * 第二步:加入咖啡或者茶--------------------可变的部分
 * 第三步:将饮料导入杯子中------------------不变的部分
 * 第四步:根据咖啡或者茶加入不同的调味品-------可变的部分
 *
 * 第一和第三步,不管泡茶还是咖啡都需要做的不变的部分,这个用公共父类来实现。
 * 第二和第四步,需要根据咖啡或者茶采取不同的做法,这个通过子类来实现。
 */

public abstract class masterplateModel {
    public void makeDrink(){
//        * 第一步:将水煮沸 ------------------------不变的部分
        boiling();
//        * 第二步:加入咖啡或者茶--------------------可变的部分
        add();
//        * 第三步:将饮料导入杯子中------------------不变的部分
        fall();
//        * 第四步:根据咖啡或者茶加入不同的调味品-------可变的部分
        sauce();
    }

    public void boiling(){
        System.out.println("将水煮沸");
    }
    public abstract void add();//使用抽象方法,让子类根据情况自我实现
    public void fall(){
        System.out.println("将饮料导入杯子中");
    }
    public abstract void sauce();//使用抽象方法,让子类根据情况自我实现
}
/**
 * 每个子类只实现父类中不一样的方法
 */

public class Tea extends masterplateModel{
    @Override
    public void add() {
        System.out.println("加入茶");
    }

    @Override
    public void sauce() {
        System.out.println("加入柠檬或者奶");
    }
}

/**
 * 每个子类只实现父类中不一样的方法
 */
public class Coffee extends masterplateModel{
    @Override
    public void add() {
        System.out.println("加入咖啡!~");
    }
    @Override
    public void sauce() {
        System.out.println("加点糖!~");
    }
}

public class masterplateDemo {
    public static void main(String[] args) {
        masterplateModel tea = new Tea();
        tea.makeDrink();
        masterplateModel coffee = new Coffee();
        coffee.makeDrink();
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值