Мне дали задание создать сервис, который объединяет файлы на основе настроек ввода. И это доработка старой системы, сделанной в PHP, и теперь она переписана как служба в Node.js с TypeScript. Задача настаивает на том, что это должно быть сделано не с длинной цепочкой простых if ... else
операторов, а с чем-то более абстрактным и настраиваемым в будущем.
Так выглядит каждый модуль (файлы называются так), большинство из них разные варианты в зависимости от комбинации:
{
"module_a": {
"version_1": "...",
"version_2": "...",
"version_3": "..."
},
"module_b": {
"version_1": "...",
"version_2": "..."
},
"module_c": {
"version_1": "...",
"version_2": "..."
},
"module_d": {
"version_1": "...",
"version_2": "...",
"version_3": "...",
"version_4": "...",
"version_5": "...",
"version_6": "..."
}
}
Это примерный список модулей, которые необходимо объединить
[
"module_a",
"module_c",
"module_d"
]
- Если module_a присутствует и существует module_ c, module_a необходимо использовать version_3 и module_ c следует использовать version_1 .
- Если используются module_a и module_ c, module_d необходимо использовать version_5 .
Что я сделал, так это то, что я использовал Стратегию для хранения всех модулей, которые нужно создать, а затем каждый модуль, вызванный выделенным Строителем. Я думал об использовании директоров для управления различными комбинациями между строителями, но эти комбинации начинают расти, и я снова набрал if statements
.
Есть ли более оптимизированное решение этой проблемы?