Назад к вопросам
Middle
5
Расскажи про Inversion of Control и Dependency Injection.
Компании, где спрашивали
Лоция
Ответ от нейросети
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, где контейнер управляет жизненным циклом и внедрением зависимостей.