Sobes.tech
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();

Такой подход облегчает тестирование (можно подставить мок), улучшает поддержку и расширяемость кода.