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

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

IoC — это принцип, когда управление потоком программы передается внешнему фреймворку/контейнеру. DI — частный случай IoC, когда зависимости передаются объекту извне (через конструктор, сеттеры или поля). DIP — принцип SOLID, который говорит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня, оба должны зависеть от абстракций.

Пример DI:

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

DIP реализуется через интерфейсы:

java
interface Repository {
    void save();
}

class UserService {
    private final Repository repo;
    
    public UserService(Repository repo) {
        this.repo = repo; // Зависим от абстракции
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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