Я пишу утилиту синтаксического анализа каталогов, которая сканирует разные каталоги для разных типов файлов.
Теперь простая реализация побуждает меня сделать следующее.
Есть список каталогов для анализа, циклический просмотр и передача его методу, который фактически выполняет файловый ввод-вывод и другую логику и возвращает результат.
List<Dir> dirList;
//loop over the list and call parseDirecotry()
parseDirectory(Dir dirToParse){
//do file io
if (filename.matches("pattern"){
//proceed)
}
}
Каждый сканируемый каталог требует от меня фильтрации определенных файлов. Так что теперь
для certails dir шаблон сопоставления будет отличаться, теперь я могу добавить шаблон сопоставления в зависимости от типа каталога в логике if else.
Или же
Я мог бы извлечь шаблон из его части объекта Dir, сделать его абстрактным, чтобы конкретные реализации каталогов содержали конкретный шаблон соответствия.
Таким образом, мне не нужно прикасаться к методу parseDirectory каждый раз, когда у меня есть новый каталог для сканирования.
Вопрос: есть ли какой-то шаблон проектирования, который я мог бы здесь использовать? Что вы думаете о вышеуказанной программе для взаимодействия, и думаете ли вы, что имеет смысл переместить метод parseDirectory () также в абстрактный класс каталога?