Создать пакет на основе комбинации между файлами - PullRequest
0 голосов
/ 25 марта 2020

Мне дали задание создать сервис, который объединяет файлы на основе настроек ввода. И это доработка старой системы, сделанной в 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"
]
  1. Если module_a присутствует и существует module_ c, module_a необходимо использовать version_3 и module_ c следует использовать version_1 .
  2. Если используются module_a и module_ c, module_d необходимо использовать version_5 .

Что я сделал, так это то, что я использовал Стратегию для хранения всех модулей, которые нужно создать, а затем каждый модуль, вызванный выделенным Строителем. Я думал об использовании директоров для управления различными комбинациями между строителями, но эти комбинации начинают расти, и я снова набрал if statements.

Есть ли более оптимизированное решение этой проблемы?

...