Добрый вечер,
Я занимаюсь рефакторингом 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 (как это сделать?)? Сравнение самого объекта задачи с новым экземпляром WikiTask (накладные расходы)?