Sobes.tech
Назад к вопросам
Senior
6

Расскажи про паттерн Inversion of Control (IoC)

Компании, где спрашивали
Octo

Ответ от нейросети

sobes.tech AI

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

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

Пример внедрения зависимостей через конструктор:

public class Service {
    private final Repository repository;

    public Service(Repository repository) {
        this.repository = repository;
    }

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

// Внешний код создаёт зависимости и передаёт их
Repository repo = new RepositoryImpl();
Service service = new Service(repo);

Таким образом, класс Service не отвечает за создание Repository, что облегчает замену реализации и тестирование.