当前位置: 首页 > news >正文

【设计模式-模板】

定义

模板方法模式是一种行为设计模式,它在一个方法中定义了一个算法的骨架,并将一些步骤延迟到子类中实现。通过这种方式,模板方法允许子类在不改变算法结构的情况下重新定义算法中的某些特定步骤。

UML图

在这里插入图片描述

组成角色

  • AbstractClass(抽象类):
    定义模板方法,包含算法的基本框架。它可能包含一些基本实现或抽象方法,供子类实现。
  • ConcreteClass(具体类):
    实现抽象类中的抽象方法,并可能覆盖模板方法中的某些步骤。具体类提供算法的具体实现。
  • templateMethod(模板方法):
    定义算法的骨架,调用各个步骤的方法。

代码

// AbstractClass
abstract class CaffeineBeverage {// 模板方法final void prepareRecipe() {boilWater();brew();pourInCup();addCondiments();}// 基本方法void boilWater() {System.out.println("Boiling water");}// 抽象方法,子类必须实现abstract void brew();// 基本方法void pourInCup() {System.out.println("Pouring into cup");}// 抽象方法,子类可以选择实现abstract void addCondiments();
}// ConcreteClass1
class Coffee extends CaffeineBeverage {@Overridevoid brew() {System.out.println("Dripping coffee through filter");}@Overridevoid addCondiments() {System.out.println("Adding sugar and milk");}
}// ConcreteClass2
class Tea extends CaffeineBeverage {@Overridevoid brew() {System.out.println("Steeping the tea");}@Overridevoid addCondiments() {System.out.println("Adding lemon");}
}// Client code
public class TemplateMethodDemo {public static void main(String[] args) {CaffeineBeverage coffee = new Coffee();coffee.prepareRecipe();System.out.println();CaffeineBeverage tea = new Tea();tea.prepareRecipe();}
}

优点

  • 代码复用:将算法的公共部分放在抽象类中,提高了代码的复用性。
  • 灵活性:子类可以自由扩展或修改算法的某些部分,而不需要修改整个算法。
  • 清晰性:算法的结构在模板方法中清晰可见,易于理解。

缺点

  • 不灵活:子类必须遵循模板方法定义的算法结构,可能导致不必要的复杂性。
  • 类的数量增加:随着算法的扩展,可能会导致类的数量增加,从而增加管理的复杂性。

使用场景

  • 当有多个子类需要重用相同的算法时。
  • 当需要在不改变算法结构的前提下扩展算法时。
  • 当算法的步骤可以由不同的子类实现,但整体流程是固定的时。

http://www.mrgr.cn/news/40049.html

相关文章:

  • 【漏洞复现】金和OA C6 GeneralXmlhttpPage.aspx Sql注入漏洞
  • Chromium 屏蔽“缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用。”提示 c++
  • 【数据结构与算法】算法和算法分析
  • MyBatis拦截器
  • 学习单片机编程和硬件设计步骤
  • ros2安装完成后重要的一步
  • Mybatis的基本使用
  • 优化理论及应用精解【12】
  • 华大HC32F448的FreeRTOS移植
  • 端模一体,猎豹移动对大模型机器人发展路径清晰
  • 【笔记】选择题笔记+数据结构笔记
  • 04-指向指针的指针
  • 【算法-分治】
  • kafka测试
  • 对于“言而有信”之己见
  • 【刷点笔试面试题试试水】找错—使用strlen()函数代替sizeof计算字符串长度
  • 新质农业——水资源可持续管理
  • DMA+AD
  • 递归算法介绍和【题解】——数楼梯
  • 【min25筛】【CF2020F】Count Leaves