我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Template Method模版模式怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Template Method模版模式怎么实现

这篇文章主要介绍“Template Method模版模式怎么实现”,在日常操作中,相信很多人在Template Method模版模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Template Method模版模式怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

举例子

如果看不懂上面的意图介绍,没有关系,设计模式需要在日常工作里用起来,结合例子可以加深你的理解,下面我准备了三个例子,让你体会什么场景下会用到这种设计模式。

模版文件

我们办事打印的文件就是模版文件,只需要写上个人基本信息再签字就可以了,我们不需要做太多的重复劳动,因为某些场景下大部分内容是可以固化下来的。比如买卖房屋,那大部分甲方乙方的条款是固定的,最大的变化是甲方与乙方的不同,我们在模版上签字时,就是利用了模版模式减少了大量写条款的时间。

实例化

实例化也可以认为是模版模式的某种表现形式,因为对于工厂方法,我们传入不同的初始值可能给出不同结果,那么实际上就是用很少的代码撬动了很大一块功能,起到了抽象作用。

Vue 模版

Vue 模版更符合我们对模版直觉的理解。这个场景中,模版指的是 HTML 模版,我们只需要在模版中以 {} 形式描述一些变量,就可以生成一块只有局部变量变化的模版 DOM,非常方便。

意图解释

意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

这个设计模式初衷是用于面向对象的,所以考虑的是如何在类中运用模版模式。首先定义一个父类,实现了一些算法,再将需要被子类重载的方法提出来,子类重载这些部分方法后,即可利用父类实现好的算法做一些功能。

比如说父类方法 function a() { b() + c() },此时子类只需要重定义 b 与 c 方法,即可复用 a 的算法(b 与 c 相加)。当然这个例子比较简单,当算法较为复杂时,模版模式的好处将凸显出来。

结构图

ConcreteClass: 具体的父类。可以看到父类中实现了 TemplateMethod,其调用了 primitiveOperation1 与 primitiveOperation2, 所以子类只需要重载这两个方法,即可享用 TemplateMethod 提供的算法。

假设 TemplateMethod 是 OpenDocument 打开文档的作用,那么 primitiveOperation1 可能是 CanOpen 校验,primitiveOperation2 可能是 ReadDocument 读取文档方法。

我们只要专心实现具体的细节方法,而不需要关心他们之间是如何相互作用的,父级会帮我们实现它。之后我们就可以调用子类的 OpenDocument 实现打开文档了。

代码例子

下面例子使用 typescript 编写。

class View {

  doDisplay(){}

  display() {

    this.setFocus()

    this.doDisplay()

    this.resetFocus()

  }

}

class MyView extends View {

  doDisplay(){

    console.log('myDisplay')

  }

}

const myView = new MyView()

myView.display()

这个例子中,doDisplay 表示父类希望子类重载的方法,一般以 do 约定打头。

弊端

模版模式用在类中,本质上是固定不可变的结构,进一步缩小重写方法的范围,重写的范围越小,代码可复用度就越高,所以一定要在具有通用算法可提取的情况下使用,而不要为了节省代码行数而过度使用。

另外前端开发中,HTML 本身就很契合模版模式,因为 HTML 中有大量标签描述千变万化的 UI 结构,可复用的地方实在太多太多,所以非常适合模版模式,所以不要认为模版模式仅能在类中使用,模版模式还能在脚手架使用呢,比如填入一些表单自动生成代码。

学习这个设计模式时,注意不要固化思维在其定义的类这个框子中,因为设计模式写于 1994 年,其中提到的模式已经被大量迁移运用,能否识别并做适当的知识迁移,是 20 多年后的今天学习设计模式的关键。

到此,关于“Template Method模版模式怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Template Method模版模式怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Golang怎么实现组合模式和装饰模式

今天小编给大家分享一下Golang怎么实现组合模式和装饰模式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。组合模式组合是一种
2023-07-04

Python设计模式中命令模式怎么实现

这篇文章主要介绍了Python设计模式中命令模式怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python设计模式中命令模式怎么实现文章都会有所收获,下面我们一起来看看吧。1.命令模式命令模式的目的是解
2023-06-29

C++单例模式的懒汉模式和饿汉模式怎么实现

本文小编为大家详细介绍“C++单例模式的懒汉模式和饿汉模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++单例模式的懒汉模式和饿汉模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。懒汉模式懒
2023-06-29

Java设计模式的代理模式怎么实现

这篇文章主要介绍了Java设计模式的代理模式怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java设计模式的代理模式怎么实现文章都会有所收获,下面我们一起来看看吧。什么是代理模式代理模式的定义: 由于某
2023-06-30

JavaScript设计模式之原型模式怎么实现

本篇内容主要讲解“JavaScript设计模式之原型模式怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript设计模式之原型模式怎么实现”吧!前言设计模式呢最多的可能是用到类
2023-07-02

java设计模式之策略模式怎么实现

这篇文章主要介绍了java设计模式之策略模式怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。策略模式:策略模式是一种定义一系列算法的方法,算法完成的工作都是相同的工作,
2023-05-31

Java设计模式的工厂模式怎么实现

本篇内容介绍了“Java设计模式的工厂模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!工厂模式在Java应用程序中对象无处不在,这
2023-06-29

Java设计模式之桥接模式怎么实现

这篇文章主要介绍“Java设计模式之桥接模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式之桥接模式怎么实现”文章能帮助大家解决问题。一、什么是桥接模式:桥接,顾名思义,就是
2023-07-02

javascript设计模式的享元模式怎么实现

这篇文章主要介绍“javascript设计模式的享元模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript设计模式的享元模式怎么实现”文章能帮助大家解决问题。一. 认识享元模
2023-06-26

java设计模式之怎么实现单例模式

这篇文章主要介绍了java设计模式之怎么实现单例模式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java设计模式之怎么实现单例模式文章都会有所收获,下面我们一起来看看吧。单元素的枚举类型经常成为实现 Sing
2023-07-04

Java设计模式的桥接模式怎么实现

这篇文章主要讲解了“Java设计模式的桥接模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java设计模式的桥接模式怎么实现”吧!什么是桥接模式桥接(Bridge)模式的定义如下:
2023-06-30

PHP设计模式之工厂模式怎么实现

在PHP中,工厂模式可以通过以下步骤来实现:1. 创建一个接口或抽象类,定义工厂所要创建的对象的公共方法。```phpinterface ProductInterface{public function doSomething();}```
2023-08-14

javascript设计模式的命令模式怎么实现

这篇文章主要介绍“javascript设计模式的命令模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript设计模式的命令模式怎么实现”文章能帮助大家解决问题。一. 认识命令模
2023-06-26

C++怎么实现Singleton模式

今天小编给大家分享一下C++怎么实现Singleton模式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。下面是使用Singl
2023-06-19

Python怎么实现BUILDER模式

这篇文章主要介绍“Python怎么实现BUILDER模式”,在日常操作中,相信很多人在Python怎么实现BUILDER模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么实现BUILDER模式
2023-06-19

PHP设计模式之迭代器模式怎么实现

本篇内容主要讲解“PHP设计模式之迭代器模式怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP设计模式之迭代器模式怎么实现”吧!迭代器模式迭代器模式(Iterator Pattern)
2023-07-05

Java设计模式的适配器模式怎么实现

这篇文章主要介绍“Java设计模式的适配器模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式的适配器模式怎么实现”文章能帮助大家解决问题。什么是适配器模式适配器模式(Adap
2023-06-30

PHP设计模式之解释器模式怎么实现

这篇文章主要介绍“PHP设计模式之解释器模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP设计模式之解释器模式怎么实现”文章能帮助大家解决问题。解释器模式(Interpreter Pa
2023-07-05

javascript设计模式中的策略模式怎么实现

这篇文章主要讲解了“javascript设计模式中的策略模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript设计模式中的策略模式怎么实现”吧!一. 认识策略模式策略
2023-06-26

编程热搜

目录