Выбор ответа Middle SOLID и принципы обновлено

DIP и DI: в чём разница

Вопрос

Какое утверждение о Dependency Inversion Principle (DIP) и Dependency Injection (DI) верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: DIP это принцип, а DI одна из техник его соблюдения. DIP говорит: модули верхнего уровня зависят от абстракций, детали тоже зависят от абстракций.

Варианты ответа

  1. Это два названия одного и того же принципа проектирования
  2. DI требует IoC-контейнера, а DIP соблюдается и без него
  3. DIP запрещает модулям импортировать что-либо напрямую
  4. DIP это принцип, а DI одна из техник его соблюденияправильный ответ

Разбор

DIP говорит: модули верхнего уровня зависят от абстракций, детали тоже зависят от абстракций. DI это техника: зависимость передают параметром, пропсом или через Context, а не создают внутри. DI можно делать без контейнера, руками. DIP не запрещает импорты вообще: импортировать React или утилиты нормально, речь о зависимостях на изменчивые детали (конкретный HTTP-клиент, аналитику).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.