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

文章目录

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

前言

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

1 模板方法模式的定义

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

由来:

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

意图:

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

适用场合:

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

2 模板方法模式的结构

模式的参与者

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

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

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

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

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

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

总结

未完待续

相关推荐
海特伟业2 小时前
隧道调频广播覆盖-隧道调频广播无线覆盖系统建设要点、难点分析与解决应对
运维·设计模式
sg_knight2 小时前
设计模式实战:享元模式(Flyweight)
python·设计模式·享元模式·flyweight
Swift社区5 小时前
AI 时代,ArkUI 的设计模式会改变吗?
人工智能·设计模式
数据中穿行5 小时前
访问者设计模式全方位深度解析
设计模式
宁雨桥5 小时前
前端设计模式面试题大全
前端·设计模式
数据中穿行6 小时前
迭代器设计模式全方位深度解析
设计模式
数据中穿行6 小时前
观察者设计模式全方位深度解析
设计模式
程序员Terry7 小时前
别老写重复代码了!模版方法模式一次讲透
java·设计模式
数据中穿行7 小时前
建造者模式全方位深度解析
设计模式
数据中穿行7 小时前
组合设计模式全方位深度解析
设计模式