Ответ
Плюсы:
- Уменьшает связанность модулей, упрощая замену и тестирование
- Повышает гибкость архитектуры — зависимости можно менять без переписывания кода
- Упрощает mock-ирование в тестах (например, подмена API на заглушки)
Минусы:
- Усложняет начальную настройку (DI-контейнеры, провайдеры)
- Может привести к избыточному количеству абстракций
- Требует дисциплины от команды — все зависимости должны внедряться явно
Пример с React Context (DI-подход):
// Создаём абстракцию (интерфейс)
const ApiContext = createContext();
// Внедряем реализацию
<ApiContext.Provider value={realApi}>
<App />
</ApiContext.Provider>
// Используем где угодно
const api = useContext(ApiContext);
Баланс важен: DI оправдан в крупных проектах, но избыточен для простых приложений.