Проверяет понимание принципа инверсии зависимостей (DIP) из SOLID, который помогает создавать гибкий и слабосвязанный код.
Принцип инверсии зависимостей (DIP) — это пятый принцип SOLID, который направлен на уменьшение связанности между модулями. Он предлагает строить архитектуру так, чтобы высокоуровневые модули (бизнес-логика) не зависели от низкоуровневых (базы данных, API). Вместо этого оба уровня должны зависеть от абстракций (интерфейсов).
Вместо того чтобы класс напрямую создавал экземпляр другого класса, он получает его через конструктор или метод (внедрение зависимостей). Это позволяет легко подменять реализации, например, для тестирования.
// Плохо: высокоуровневый модуль зависит от конкретной реализации
class EmailService {
send(message) { /* отправка email */ }
}
class Notification {
constructor() {
this.service = new EmailService(); // жесткая связь
}
notify(msg) { this.service.send(msg); }
}
// Хорошо: зависимость от абстракции
class Notification {
constructor(service) { // внедрение зависимости
this.service = service;
}
notify(msg) { this.service.send(msg); }
}
// Теперь можно передать любой сервис, реализующий интерфейс sendDIP помогает создавать гибкий, тестируемый и поддерживаемый код. Применяйте его в любом проекте, где важна модульность и возможность замены компонентов.