Встречается на собеседованиях • сегодня
Зачем нужен Dependency Inversion
Dependency Inversion Principle (DIP) — один из SOLID принципов, который гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей, детали должны зависеть от абстракций.
Польза:
- Уменьшает связанность кода.
- Упрощает тестирование (можно подменять зависимости через моки).
- Облегчает поддержку и расширение.
Пример без DIP:
java
class EmailService {
void sendEmail() { /* ... */ }
}
class Notification {
private EmailService email = new EmailService();
void notify() { email.sendEmail(); }
}Пример с DIP:
java
interface MessageService {
void send();
}
class EmailService implements MessageService {
@Override public void send() { /* ... */ }
}
class Notification {
private MessageService service;
Notification(MessageService service) { this.service = service; }
void notify() { service.send(); }
}Теперь Notification зависит от абстракции (MessageService), а не от конкретного EmailService. Можно легко добавить SmsService без изменения кода Notification.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы