设计模式——模板方法模式

文章目录

  • 前言
  • [1 模板方法模式的定义](#1 模板方法模式的定义)
  • [2 模板方法模式的结构](#2 模板方法模式的结构)
  • [3 模板方法模式的效果分析](#3 模板方法模式的效果分析)
  • 总结

前言

模板方法模式是行为型设计模式的一种,本文将介绍一下模板方法模式。

1 模板方法模式的定义

定义了一个算法步骤,并允许子类为一个或多个步骤提供实现。子类在不改变算法架构的情况下,可重新定义算法中某些步骤。

由来:

  • 关注类对象职责分配,实现父类和子类对象之间职责的划分
  • 将多个类的共有内容提取到一个模板中的想法,是模板方法模式的重要思想
  • 使用继承机制使得父类和子类之间达到分工合作目的,父类完成流程(算法、框架),子类实现其具体工作

意图:

  • 定义操作中算法的骨架,将一些步骤的执行延迟到其子类中,子类不需要改变算法结构即可重定义算法的某些步骤。

适用场合:

  • 具有统一的操作步骤或操作过程,具有不同的操作细节,即存在多个具
    有同样操作步骤的应用场景,但某些具体的操作细节却各不相同。

2 模板方法模式的结构

模式的参与者

  • AbstractTemplate
    • 定义一个"模板"(或算法骨架)。子类(使用该模板的客户)重定义模板中的操作(相当于根据模板填写内容)
    • ConcreteTemplate
  • 实现模板定义的操作以完成算法中与特定子类相关的步骤

3 模板方法模式的效果分析

  • 模板方法是一种代码复用技术,模板提取了"子类"的公共行为

  • 模板方法导致一种反向的控制结构:"你别来找我,让我去找你",即:一个父类调用子类的操作,而不是相反。符合开闭原则。

  • 可通过在抽象模板定义模板方法给出成熟算法步骤,同时又不限制步骤细节,具体模板实现算法细节不会改变整个算法骨架

  • 在抽象模板模式中,可以通过钩子方法对某些步骤进行挂钩,具体模板通过钩子可以选择算法骨架中的某些步骤

总结

未完待续

相关推荐
Cosolar18 小时前
DeepSeek Harness 理解 Harness 的设计哲学 - 可组合的插件运行时
人工智能·设计模式·架构
Nebula_g19 小时前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式
George_Ye1 天前
同一本书,一人一份:我如何设计 AI 个性化扫书报告
设计模式
莫得感情 o2 天前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
AI人工智能+电脑小能手3 天前
大白话说Java设计模式-08-建造者模式(业务实战篇)
java·设计模式·建造者模式·架构设计·对象构建
AustinXu3 天前
从 Claude Code 到 Claude Tag,Harness Engineering 走到了组织这一层
设计模式·团队管理
剧中有戏3 天前
单例模式从入门到精通:一个数据库连接池的完整剖析
设计模式
胡萝卜术3 天前
编译期与运行期的双重防线:从 TypeScript 类型之争到 LLM 输出的自动化择优
前端·设计模式·面试
货拉拉技术3 天前
重塑 Agent 度量衡:基于 LLM-as-a-Judge 的离线评估体系与实践
算法·设计模式
KhalilRuan3 天前
设计模式小记
设计模式