Back to questions
Middle
1
Знаешь принципы SOLID? Расскажи про принцип инверсии зависимостей (DIP)
Companies where asked
X-Notes
Answer from AI
sobes.tech AI
Принцип инверсии зависимостей (Dependency Inversion Principle, DIP) — один из пяти принципов SOLID. Он гласит:
- Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций.
- Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Это помогает снизить связанность кода и повысить его гибкость.
Например, в frontend-приложении вместо того, чтобы компонент напрямую создавал экземпляр сервиса, он получает его через интерфейс или инъекцию зависимостей. Это позволяет легко менять реализацию сервиса без изменения компонента.
interface IDataService {
fetchData(): Promise<string[]>;
}
class ApiService implements IDataService {
fetchData() {
return fetch('/api/data').then(res => res.json());
}
}
class Component {
constructor(private dataService: IDataService) {}
async render() {
const data = await this.dataService.fetchData();
console.log(data);
}
}
const service = new ApiService();
const component = new Component(service);
component.render();
Такой подход облегчает тестирование (можно подставить мок), улучшает поддержку и расширяемость кода.