晚安,
我正在对http://wiki2xhtml.sourceforge.net/进行重大重构,以便最终获得更好的概述和可维护性。 (当我决定开始编程时,我启动了项目,所以 - 你得到它,对吧?;))
目前我想知道如何解决我现在要描述的问题:
每个文件都将通过几个解析器(例如一个用于链接,一个用于表,一个用于图像等):
public class WikiLinks extends WikiTask { ... }
public class WikiTables extends WikiTask { ... }
然后将以这种方式解析文件:
public class WikiFile {
...
public void parse() {
//Run all parsers on this file.
if (!parse) return;
WikiTask task = new WikiLinks();
do {
task.parse(this);
} while ((task = task.nextTask()) != null);
}
}
有时我可能根本不想使用解析器(对于只需要复制的文件),或者只使用一个选择的解析器(例如用于测试目的)。所以在运行task.parse()之前,我需要检查这个特定的解析器是否真的是必需的/期望的。 (也许通过黑名单或白名单。)
您建议进行比较?每个WikiTask的ID(怎么办?)?将任务对象本身与WikiTask的新实例(开销)进行比较?
答案 0 :(得分:0)
我很抱歉,但我真的不明白你的解析功能。如果您不想使用解析器,请将解析设置为false? :)
如果我试着猜你想要什么......我会简单地使用枚举。你的任务可以保持ParserType type;
,所以你可以做某事。像if(task.getParserType() == this.getParserType() ) { task.parse(this) }
如果你想为某个任务使用不同的解析器,你肯定需要使用List。问候。