Встречается на собеседованиях • сегодня

Приведи пример принципа Dependency Inversion

Dependency Inversion Principle (DIP) гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.

Пример:

java
interface MessageService {
    void sendMessage(String message);
}

class EmailService implements MessageService {
    @Override
    public void sendMessage(String message) {
        System.out.println("Sending email: " + message);
    }
}

class NotificationService {
private final MessageService messageService;

text
public NotificationService(MessageService messageService) {
    this.messageService = messageService; // Внедрение зависимости через конструктор
}

public void notifyUser(String message) {
    messageService.sendMessage(message);
}

}

text
**Суть:**  
- `NotificationService` (верхний уровень) зависит от абстракции `MessageService`, а не от конкретной реализации `EmailService`.  
- Можно легко заменить `EmailService` на другой сервис (например, `SmsService`), не меняя код `NotificationService`.  
- Упрощает тестирование (можно подменить реальный сервис на mock).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы