Назад к вопросам
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, что облегчает замену реализации и тестирование.