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

Что такое инверсия зависимостей

Инверсия зависимостей (Dependency Inversion Principle, DIP) — один из принципов SOLID, который гласит, что:

  1. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
  2. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Пример без DIP:

csharp
public class EmailService {
    public void SendEmail(string message) { /* ... */ }
}

public class Notification {
private EmailService _emailService = new EmailService();
public void Notify(string message) {
_emailService.SendEmail(message);
}
}

text
Здесь `Notification` жестко зависит от `EmailService`.  

**Пример с DIP:**  
```csharp
public interface IMessageService {
    void SendMessage(string message);
}

public class EmailService : IMessageService {
    public void SendMessage(string message) { /* ... */ }
}

public class Notification {
    private IMessageService _messageService;
    public Notification(IMessageService messageService) {
        _messageService = messageService;
    }
    public void Notify(string message) {
        _messageService.SendMessage(message);
    }
}

Теперь Notification зависит от абстракции IMessageService, а реализация (например, EmailService) может быть легко заменена.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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