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

设计模式 - 模板方法模式

该模式将定义一个操作中的算法骨架,并将算法的一些步骤延迟到子类中实现,使得子类可以在不改变算法结构的情况下重定义算法的某些特定步骤。

例如,炒菜的步骤是固定的,具体可分为倒油、热油、倒蔬菜、倒调料品、翻炒等。通过模板方法模式模拟:

public abstract class AbstractClass {  public final void cookProcess() {  // 固定的炒菜步骤this.pourOil();  this.heatOil();  this.pourVegetable();   this.pourSauce();  this.fry();  }  // 倒油、热油、翻炒 是一样的,在抽象类中直接实现public void pourOil() { System.out.println("倒油"); }  public void heatOil() { System.out.println("热油"); }  public void fry() { System.out.println("翻炒"); }  // 倒蔬菜、倒调料品 取决于蔬菜种类,延迟到子类中实现public abstract void pourVegetable();   public abstract void pourSauce();  
}public class ConcreteClassOfTomato extends AbstractClass { @Override  public void pourVegetable() {  System.out.println("下锅的蔬菜是西红柿");  }  @Override  public void pourSauce() {  System.out.println("下锅的酱料是盐");  }  
}

优点

  1. 提高代码复用

  2. 实现了反向控制,由父类决定整体流程,子类仅提供局部细节的实现,遵守 OCP 开闭原则

缺点

  1. 每当新增一个不同的实现时,都需要定义一个新的子类,导致类个数增加,系统复杂度增加

  2. 反向控制增加了代码阅读的难度

相关文章:

  • 前端项目部署 打包上线
  • Vue项目前后端交互大量数据的-之-前端优化方案
  • Java——设计模式(Design Pattern)
  • LINQ性能优化终极指南
  • 数据库中表的设计规范
  • S32K开发环境搭建详细教程(二、添加S32K3xx SDK)
  • 【读代码】BAGEL:统一多模态理解与生成的模型
  • python装饰器的简单理解
  • 【深度剖析】三一重工的数字化转型(下篇1)
  • 基于SamOutV8的序列生成模型实现与分析
  • 用本地大模型解析智能家居语音指令:构建一个离线可用的文本控制助手
  • 保姆式一步一步制作B端左侧菜单栏
  • 状态码··
  • 从零开始构建一个区块链应用:技术解析与实践指南
  • 【Fargo】razor框架调用mediasoup的发送和接收能力
  • 英语写作中“随着……的出现”with the advent of 的用法
  • 线性代数中的向量与矩阵:AI大模型的数学基石
  • 内存越界(Memory Out-of-Bounds)详解
  • SGlang 推理模型优化(PD架构分离)
  • Linux Shell编程(九)
  • 邢台做网站建设优化制作公司金信/厦门seo搜索排名
  • 衢州做网站公司/海南百度推广代理商
  • 动画形式的h5在哪个网站做/百度seo推广怎么收费
  • wordpress 插件 文本/hyein seo官网
  • 深圳响应式网站公司/报个计算机培训班多少钱
  • 网站建设 中国移动/今日冯站长之家