Начните с явной передачи зависимостей через initializer. Контейнер нужен, когда граф и жизненные циклы действительно сложнее ручной сборки.
Когда стоит писать собственный DI, а когда использовать готовое решение?
Начните с явной передачи зависимостей через initializer. Контейнер нужен, когда граф и жизненные циклы действительно сложнее ручной сборки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Начните с явной передачи зависимостей через initializer. Контейнер нужен, когда граф и жизненные циклы действительно сложнее ручной сборки.
Собственное минимальное решение оправдано при небольшом наборе правил и готовности команды его поддерживать. Готовое полезно для развитых scopes, фабрик и большого числа модулей, если его стоимость и ограничения понятны.
Сравнивайте прозрачность зависимостей, обнаружение ошибок, тестовые подмены, скорость сборки и отладки. Не превращайте DI в глобальный service locator, скрывающий реальные связи. Выбор библиотеки следует архитектурной задаче, а не желанию добавить ещё один framework.