标识扩展抽象类的类

时间:2010-05-06 19:46:37

标签: java

晚安,

我正在对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的新实例(开销)进行比较?

1 个答案:

答案 0 :(得分:0)

我很抱歉,但我真的不明白你的解析功能。如果您不想使用解析器,请将解析设置为false? :) 如果我试着猜你想要什么......我会简单地使用枚举。你的任务可以保持ParserType type;,所以你可以做某事。像if(task.getParserType() == this.getParserType() ) { task.parse(this) }如果你想为某个任务使用不同的解析器,你肯定需要使用List。问候。