Я добавлю:
Вы можете выполнить внедрение зависимостей, просто имея параметризованное определение функции.
Однако для того, чтобы эта работа работала последовательно, каждый должен сделать это на самом деле,Многие считают, что легче реализовать соглашение, используя шаблон проектирования фабрики.
Структуры внедрения зависимостей решают проблему сокращения шаблонов написания этих фабрик.
Я бы сказал, что внедрение зависимостей через фабрику не является идеальным.По моему мнению, фабрики добавляют дополнительный уровень косвенности и в некотором смысле делают детерминированные функции недетерминированными в том смысле, что они теперь являются функцией входных данных плюс состояние остальной части программы (ваша настройка), которую вы не можете видетьтолько из определения функции.Фабрики усложняют работу кода, поскольку они добавляют дополнительный уровень косвенности. Я бы сказал, что во многих случаях на самом деле не так уж сложно следовать соглашению и вручную вводить классы с помощью аргументов функции.Опять же, однако, для большой кодовой базы, вероятно, легче применить правило через фабрику.
.. при этом иногда я действительно задаюсь вопросом, были бы эти большие кодовые базы даже такими большими, если бы они не писали так много вещей, которые пытаются превентивно решить проблемы, которых у них нет в первую очередь.