Sobes.tech
Back to questions
Middle
6

Расскажи про Inversion of Control и Dependency Injection.

Companies where asked
Лоция

Answer from AI

sobes.tech AI

Inversion of Control (IoC) — это принцип, при котором управление созданием и связыванием объектов передаётся внешнему контейнеру или фреймворку, а не реализуется внутри компонентов напрямую. Это позволяет снизить связанность и повысить гибкость кода.

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

Пример на Java:

public class Service {
    private final Repository repo;

    // Зависимость внедряется через конструктор
    public Service(Repository repo) {
        this.repo = repo;
    }

    public void doWork() {
        repo.save();
    }
}

Здесь Service не создаёт Repository самостоятельно, а получает его извне. Это упрощает тестирование и замену реализаций.

IoC и DI широко применяются в Spring Framework, где контейнер управляет жизненным циклом и внедрением зависимостей.