模板方法模式——看看 JDK 和 Spring 是如何优雅复用代码的

不管是我们学习并发编程中的 AQS,还是看 Spring 的源码,肯定都会遇到模板方法模式,它简直太常见了。

前言

模板,顾名思义,它是一个固定化、标准化的东西。

模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。

场景问题

程序员不愿多扯,上来先干两行代码

网上模板方法的场景示例特别多,个人感觉还是《Head First 设计模式》中的例子比较好。

假设我们是一家饮品店的师傅,起码需要以下两个手艺

真简单哈,这么看,步骤大同小异,我的第一反应就是写个业务接口,不同的饮品实现其中的方法就行,像这样

画完类图,猛地发现,第一步和第三步没什么差别,而且做饮品是个流程式的工作,我希望使用时,直接调用一个方法,就去执行对应的制作步骤。

灵机一动,不用接口了,用一个抽象父类,把步骤方法放在一个大的流程方法 makingDrinks() 中,且第一步和第三步,完全一样,没必要在子类实现,改进如下

再看下我们的设计,感觉还不错,现在用同一个 makingDrinks() 方法来处理咖啡和茶的制作,而且我们不希望子类覆盖这个方法,所以可以申明为 final,不同的制作步骤,我们希望子类来提供,必须在父类申明为抽象方法,而第一步和第三步我们不希望子类重写,所以我们声明为非抽象方法

public abstract class Drinks {

    void boilWater() {
        System.out.println("将水煮沸");
    }

    abstract void brew();

    void pourInCup() {
        System.out.println("倒入杯子");
    }

    abstract void addCondiments();
    
    public final void makingDrinks() {
        //热水
        boilWater();
        //冲泡
        brew();
        //倒进杯子
        pourInCup();
        //加料
        addCondiments();
    }
}

接着&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring框架是一个开源的Java应用程序框架,用于开发企业级Java应用程序。Spring的版本升级对于项目的发展和性能至关重要。而JDK1.8是Java开发工具包的最新版本,提供了更多的功能和改进。 Spring的版本升级可以带来多个好处。首先,升级到较新的Spring版本可以获得更多的功能和改进,提供更好的开发体验。新版本通常会修复旧版本中存在的问题和漏洞,提高应用程序的安全性和稳定性。其次,新版本可能会引入更高效的算法和优化,从而提高应用程序的性能。同时,新版本还会加入更多的第三方库和工具支持,帮助开发者更容易地集成其他框架和组件。 JDK1.8的发布也给Java开发者带来了许多好处。首先,JDK1.8引入了Lambda表达式和函数式接口,使得Java代码更简洁和易读。这种函数式编程的特性可以提高开发效率,并且减少了冗余的代码量。其次,JDK1.8提供了更多的新特性,如Stream API、Optional类、新的日期和时间API等,增强了Java语言的功能和灵活性。此外,JDK1.8还针对性能进行了优化,使得应用程序在执行速度和内存占用方面更加高效。 综上所述,Spring版本升级和JDK1.8的使用可以为Java开发者带来诸多好处。无论是更好的框架支持还是更高效的编程特性,这些改进都有助于开发者更好地设计和开发高质量的应用程序。因此,升级Spring版本和使用JDK1.8都是值得推荐的做法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值