IoC (Inversion of Control) и DI (Dependency Injection) - это понятия, связанные с организацией кода в приложении и управлением зависимостями между классами.
IoC - это принцип проектирования, который переносит ответственность за создание и управление объектами из вызывающего кода в среду исполнения. При использовании IoC контейнер управляет жизненным циклом объектов и определяет, какие классы должны быть созданы и когда. Таким образом, IoC отделяет создание объектов от их использования.
DI - это конкретная реализация принципа IoC, которая использует механизмы, такие как конструкторы или методы, для внедрения зависимостей в объекты. Это означает, что зависимости передаются в виде параметров в конструктор или метод объекта, вместо того чтобы объект сам создавал эти зависимости. Таким образом, DI позволяет избавиться от жестких зависимостей между классами и сделать код более гибким и модульным.
Пример использования DI может выглядеть так:
public class OrderService {
private final OrderRepository orderRepository;
public OrderService(OrderRepository orderRepository) {
this.orderRepository = orderRepository;
}
public void createOrder(Order order) {
orderRepository.save(order);
}
}
В этом примере OrderService зависит от OrderRepository, который передается в конструкторе. Таким образом, OrderService не знает, как создавать объект OrderRepository и не зависит от конкретной реализации этого класса.
Использование DI позволяет сделать код более гибким и расширяемым, упрощает тестирование и делает приложение менее связанным и более модульным.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov