晚上好类,确定哪些是延长一个抽象类
我做的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的新实例(开销)?
是的,根本不解析已经工作。只运行某些分析程序还没有。 - 对不起,我上面描述的parse()函数不是WikiTask的一部分,而是File对象的一部分。只要有下一个解析器(我使用
task.nextTask()
,因为顺序很重要),在WikiFile对象上调用parse()将运行所有可用的解析器。 - 使用枚举来识别解析器可能确实是最简单的方法,因为它们也是轻量级的。 – 2010-05-07 07:21:45