java - 应用于文本规范化链的设计模式

标签 java design-patterns

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

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

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

enter image description here

如图所示,依次使用了三个归一化器,然后再次使用第一个归一化器。这只是一个例子。在其他场景中,我可以有 7 个规范化器而不会重复,而在其他情况下,第二个规范化器将在第三个之前执行。因此,主要思想是拥有多个规范化器并动态地定义一个链,我可以在其中进行重复。

我使用这种方法的问题是链中的所有成员总是被执行(没有拒绝条件)并且我有成千上万行要处理所以我不想花很多时间遍历链.

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

如果您需要更多信息,请提出要求,我会编辑问题。

最佳答案

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

大卫,

这有点矛盾。你说你想执行所有规范化程序,
例如1,2,3,1 按此顺序在文件的每一行上。但是你说你的
问题是你执行所有这些可能会减慢你的速度。这是
规范化程序的顺序取决于您正在处理的当前行?
如果它不依赖,并且你需要在所有行上运行 1,2,3,1,那么你
只需要去做。我真的不知道如何避免调用一些
标准化器,但仍然在每一行调用所有这些。

关于java - 应用于文本规范化链的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21501354/

相关文章:

java - 将角色统计信息打印到控制台

python - 如何根据子列表 [0] 中的模式加速划分子列表列表的过程?

php - 在不使用框架的情况下清晰地构建 PHP 站点的最佳方法是什么?

Scalaz,*语法类的目的

java - 使用 XmlIo 读取 apache beam 中的 xml 文件

java - Java如何从字节数组形成TCP数据包?

java - 如何运行一系列动画?动画集让我失望

java - TreeNode 的 Tic Tac Toe 解决方案

design-patterns - 外观和抽象的出现模式

python - 复杂查询的设计模式