Sobes.tech
Back to questions
Junior — Middle
103

Объясните принцип внедрения зависимостей в программном обеспечении и как он используется для повышения модульности кода.

Companies where asked
СБЕРСБЕР
РосатомРосатом

Answer from AI

sobes.tech AI

Внедрение зависимостей (Dependency Injection, DI) — это принцип проектирования, при котором объект получает свои зависимости (например, другие объекты или сервисы) извне, а не создаёт их самостоятельно. Это повышает модульность и тестируемость кода, так как компоненты становятся слабо связанными и легко заменяемыми.

В Node.js DI часто реализуется через передачу зависимостей в конструктор или функции, либо с помощью специальных библиотек (например, InversifyJS).

Пример простого внедрения зависимостей:

class Logger {
  log(message) {
    console.log(message);
  }
}

class UserService {
  constructor(logger) {
    this.logger = logger; // зависимость передается извне
  }

  createUser(name) {
    // логика создания пользователя
    this.logger.log(`User ${name} created`);
  }
}

const logger = new Logger();
const userService = new UserService(logger);
userService.createUser('Alice');

Такой подход позволяет легко заменить Logger на другой, например, для тестирования или изменения способа логирования.