Встречается на собеседованиях • сегодня

В чем разница между Dependency Injection и Dependency Inversion

Dependency Injection (DI) — это паттерн, при котором зависимости передаются объекту извне (через конструктор, сеттеры или интерфейсы), а не создаются внутри класса. Это упрощает тестирование и уменьшает связанность.

Пример DI через конструктор:

java
class UserService {
    private final UserRepository repo;
    
    public UserService(UserRepository repo) {
        this.repo = repo; // Внедрение зависимости
    }
}

Dependency Inversion Principle (DIP) — один из принципов SOLID, который гласит:

  1. Модули верхнего уровня не должны зависеть от модулей нижнего уровня — оба должны зависеть от абстракций
  2. Абстракции не должны зависеть от деталей — детали должны зависеть от абстракций

Пример DIP:

java
interface Repository { /* методы */ }
class DatabaseRepository implements Repository { /* реализация */ }
class UserService {
    private final Repository repo; // Зависим от абстракции
}

DI — это способ реализации DIP. DIP — это принцип проектирования, а DI — паттерн внедрения зависимостей.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы