Java设计模式—模板模式(Template)

本文介绍了Java中的模板模式,用于定义一个操作的算法骨架,子类可重写具体步骤。通过实例展示了如何创建模板抽象类及其实现,并分析了Spring框架中的IOC初始化过程作为模板模式的应用。同时,讨论了模板模式的优缺点和使用场景。

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

模板模式

业务需求

  • 编写豆浆制作程序
  • 选材-添加配料-浸泡-豆浆机打碎
  • 选材、浸泡、打碎这几步对于制作不同豆浆都是一样的
  • 比较简单,这里不再使用传统方法,直接上设计模式

模板模式基本介绍

  • 模板模式,在一个抽象类公开定义了执行他的方法的模板;他的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行
  • 简单说,模板模式定义一个操作中的算法骨架,将一些步骤延迟到子类中,使子类可以不改变一个算法结构,就可以重新定义该算法的某些特定步骤
  • 模板模式属于行为型模式

原理类图
在这里插入图片描述
原理类图说明

  • AbstractClass是抽象类,包括模板方法,定义了算法骨架,由子类具体实现里面的抽象方法
  • ConcreteClass 实现了抽象方法,完成算法中的特定子类相关步骤
  • 模板方法可以做成final,防止子类覆盖

代码思路
在这里插入图片描述
模板抽象类

public abstract class SoyaMilk {
   
    // 模板方法
    final void make() {
   
        select();
        addCondiments();
        soak();
        beat();
    }

    // 选材料
    void select() {
   
        System.out.println("第一步,选择新鲜黄豆");
    }
    // 添加不同配料
    abstract void addCondiments();
    // 浸泡
    void soak() {
   
        System.out.println("第三步,浸泡黄豆和配料3小时");
    }
    // 打碎
    void beat() {
   
        System.out.println("第四步,打碎黄豆和配料");
    }
}

子类实现

public class RedBeanSoyaMilk extends SoyaMilk{
   
    @Override
    void addCondiments() {
   
        System.out.println("第二步,加入红豆配料");
    }
}
public class PeanutSoyaMilk extends SoyaMilk{
   
    @Override
    void addCondiments() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值