Junior — Middle
103
Dasturlashda bog'liq bo'lish prinsipi va bog'liq bo'lishni in'ektsiya qilish prinsipi o'rtasidagi farqlarni tushuntiring.
Qaerda so'ralgan kompaniyalar
Eclipse Digital
AIdan javob
sobes.tech AI
Принцип инверсии зависимостей (Dependency Inversion Principle, DIP) — это один из пяти принципов SOLID, который гласит, что:
- Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
- Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
То есть DIP направлен на архитектуру и структуру кода, чтобы снизить связанность и повысить гибкость.
Внедрение зависимостей (Dependency Injection, DI) — это конкретный паттерн (способ) реализации DIP. DI означает передачу зависимостей (объектов, сервисов) в класс извне, а не создание их внутри класса.
Пример:
- DIP — идея, что класс не должен создавать конкретные зависимости, а работать с абстракциями.
- DI — способ, когда зависимости передаются через конструктор, сеттер или интерфейс.
Пример внедрения зависимостей в Java:
interface Service {
void execute();
}
class ServiceImpl implements Service {
public void execute() {
System.out.println("Выполнение сервиса");
}
}
class Client {
private Service service;
// Внедрение зависимости через конструктор
public Client(Service service) {
this.service = service;
}
public void doWork() {
service.execute();
}
}
// Использование
Service service = new ServiceImpl();
Client client = new Client(service);
client.doWork();
Итого:
- DIP — принцип проектирования, направленный на разделение зависимостей через абстракции.
- DI — способ реализации этого принципа, когда зависимости передаются извне.