全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

设计模式:类型脚本中的模板方法模式

发布时间:2022-09-13 15:12:32
发布人:syq

  欢迎来到“类型脚本中的设计模式”系列,它介绍了使用类型脚本进行 Web 开发中的一些有用的设计模式。

类型脚本中的模板方法模式

  设计模式对于Web开发人员来说非常重要,我们可以通过掌握它们来编写更好的代码。在本文中,我将使用类型脚本来介绍模板方法模式。

  CSV(逗号分隔值)是一种通用的、相对简单的文件格式。CSV 文件以纯文本形式存储表格数据(数字和文本)。当您需要处理CSV数据时,对应的处理流程如下图所示:

  在了解了上面的处理流程之后,让我们使用 Node.js来实现解析 csv 文件的功能。

  用户.csv

1

  parse-csv.ts

2

  在上面的代码中,我们导入 d3-dsv 模块来实现 csv 的解析功能。之后,我们使用 esno 来执行解析 cvs.ts 文件:

3

  当上述代码成功运行时,终端将输出以下结果:

4

  Markdown是一种轻量级标记语言,允许人们以易于阅读和写入的纯文本格式编写文档。要在网页上显示降价文档,我们必须将降价文档转换为HTML文档。

  为了实现上述功能,我们的处理流程如下:

5

  在了解了上面的处理流程之后,我们来使用 Node.js来实现解析 Markdown 文件的功能。

  Users.md

6

  parse-md.ts

7

  在上面的代码中,我们导入标记的模块来实现Markdown文件的解析功能。之后,我们使用 esno 来执行解析 md.ts 文件:

8

  当上述代码成功运行时,终端将输出以下结果:

9

  对于前两个示例,尽管解析了不同类型的文件,但您会发现它们的解析过程是相似的。

10

  整个过程主要包括三个步骤:读取文件,解析文件和处理数据。对于此场景,我们可以引入模板方法模式来封装上述三个步骤的处理顺序。

  模板方法模式由两部分组成:抽象父类和具体实现子类。通常,子类的算法框架封装在抽象父类中,它还包括一些公共方法的实现和封装子类中所有方法的执行顺序。通过继承此抽象类,子类还继承整个算法结构,并且可以选择重写父类的方法。

  接下来,让我们看一下如何使用模板方法模式实现 CSV 解析器和 Markdown 解析器。

  为了更好地理解下面的代码,我们先来看看相应的UML类图:

11

  在上图中,我们定义了一个抽象类,然后分别定义了两个子类和 。FileParser CsvParser MarkdownParser

  文件解析器类

13

  抽象类中的方法是所谓的模板方法,我们在其中封装了文件处理的过程。parse FileParser

  csvParser 类

15

  MarkdownParser 类

16

  使用 两个类 和 ,我们可以通过以下方式解析 CSV 和标记文件

17

  当您成功运行上面的代码时,相应的输出如下图所示:

18

  使用模板方法模式,我们重新实现了 CSV 和标记文件的解析。实际上,使用抽象类,我们可以轻松地开发不同的文件解析器。FileParser

  最后,我们来总结一下模板方法模式的使用场景:

  该算法的整体步骤非常固定,但是当单个部分是可变的时,此时可以使用模板方法模式来抽象易于可变的部分,以便实现子类。

相关文章

软件定制开发中的敏捷开发是什么?

软件定制开发中的敏捷开发是什么?

2023-10-14
三维重建 3D reconstruction有哪些实用算法?

三维重建 3D reconstruction有哪些实用算法?

2023-10-14
朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型的应用场景是什么?

朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型的应用场景是什么?

2023-10-14
精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?

精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取