Sobes.tech
Senior

O que é inversão de controlo (IoC), como este princípio é implementado e para que serve

sobes.tech IA

Resposta da IA

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

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

Для чего нужен IoC:

  • Упрощает тестирование, так как зависимости можно подменять моками.
  • Повышает модульность и переиспользуемость кода.
  • Облегчает управление жизненным циклом объектов.

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

public class Service {
    private final Repository repository;

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

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

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