Встречается на собеседованиях • сегодня
Какой последний принцип SOLID
Принцип инверсии зависимостей (Dependency Inversion Principle, DIP).
Он гласит:
- Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
- Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Пример на TypeScript:
typescript
// Плохо: класс UserService зависит от конкретной базы данных
class MySQLDatabase {
save(data: string) { /* ... */ }
}
class UserService {
private db = new MySQLDatabase(); // Жёсткая зависимость
saveUser(data: string) {
this.db.save(data);
}
}
// Хорошо: зависимость от абстракции (интерфейса)
interface Database {
save(data: string): void;
}
class UserService {
constructor(private db: Database) {} // Внедрение зависимости
saveUser(data: string) {
this.db.save(data);
}
}
// Теперь можно подменить реализацию:
const userService = new UserService(new MySQLDatabase());
// Или даже на другую БД без изменения UserService
text
Это упрощает тестирование и расширяемость кода.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы