Как выбрать лучший дизайн для достижения инъекции зависимостей
У меня есть несколько функций в моем основном методе для моего приложения python. Все эти функции выполняют различные задачи, вызывая различные классы в моей папке src. Приложения, использующие мой инструмент, определяют конфигурационный файл, который мой инструмент считывает и выполняет соответствующие задачи. До сих пор существует только один путь рабочего процесса для всех задач.
def task1(conf): # task1 def task2(conf): # task2 def main(args): args = parse_args(args) conf = get_conf(args.config_file) args.command(conf=conf) def get_conf(config_file): # read the conf and get it as a class obj if __name__ == "__main__": sys.exit(main(sys.argv[1:]))
Теперь я расширяю функциональность своего инструментария для поддержки новой опции конфигурации, которая вводит другой путь рабочего процесса, но с тем же набором задач. Поэтому, основываясь на типе конфигурации, мне нужно выбрать, какому рабочему процессу следовать. По этой причине я пытаюсь реорганизовать свою кодовую базу, чтобы сделать ее легко расширяемой и поддерживаемой. Я планирую создать интерфейс для каждой задачи и иметь отдельные классы для каждой задачи типа конфигурации, а затем использовать инъекцию зависимостей для создания необходимого класса для данного типа конфигурации из main.
Я могу использовать одну из многих библиотек инъекций зависимостей или я также могу достичь того, что мне нужно, используя фабричный класс, который будет отвечать за создание объекта на основе типа конфигурации без необходимости использовать отдельную библиотеку DI.
Я ищу любые предложения о том, какой здесь может быть правильный подход. Есть ли лучшая альтернатива, которую я не рассматривал? Если у кого-то есть опыт использования библиотек DI в python, не могли бы вы поделиться своим опытом?
Что я уже пробовал:
Я использовал фабричный шаблон с наследованием.
Gerry Schmitz
Все, что уменьшает зависимость от сторонних библиотек, - это хорошо, ИМО.