Встречается на собеседованиях • сегодня
Что такое инверсия зависимостей
Инверсия зависимостей (Dependency Inversion Principle, DIP) — один из принципов SOLID, который гласит, что:
- Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
- Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Пример без 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) может быть легко заменена.

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