应用到文本规范化器链的设计模式

2024-03-03

我有一个程序,它定期接收包含我逐行处理的多行的文件。为了处理这些行,我开发了一些文本规范化器,可以对行进行转换。例如,一种规范化可以是删除停用词、语法更正、删除 url 等。

用于给定文件的规范化器必须动态决定,这样我就可以更改它们的数量并更改其顺序。对于某些文件,我只需删除例如停用词,但其他文件则需要更多规范化器,在某些情况下我必须应用一个规范化器两次。

我组织代码的第一个想法是应用责任链模式。在这种情况下,我会有这样的东西:

如图所示,按顺序使用三个标准化器,然后再次使用第一个标准化器。这只是一个例子。在其他情况下,我可以有 7 个标准化器而无需重复,而在其他情况下,第二个标准化器将在第三个标准化器之前执行。因此,主要思想是拥有多个标准化器并动态地定义一个可以在其中重复的链。

我对这种方法的问题是,链的所有成员总是被执行(没有拒绝条件),并且我有成千上万行要处理,所以我不想花费大量时间迭代链。

所以,我的问题是,实现我需要的功能的最佳方法是什么,让我有机会添加新的规范化器,而不必重写代码并保持链迭代的高速?

如果您需要更多信息,请询问,我将编辑问题。


“我对这种方法的问题是,链的所有成员总是被执行(没有拒绝条件),而且我有成千上万行要处理,所以我不想花很多时间迭代链。”

David,

这有点矛盾。你说你想执行所有规范化器,
例如文件中每一行按 1,2,3,1 的顺序排列。但后来你说你的
问题是你执行所有这些可能会减慢你的速度。这是
标准化器的顺序取决于您正在处理的当前行?
如果它不相关,并且您需要在所有行上运行 1,2,3,1,那么您
只是需要这样做。我真的不明白你如何才能避免打电话给一些人
标准化器,但仍然在每行调用所有这些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用到文本规范化器链的设计模式 的相关文章

随机推荐