На каких уровнях можно выполнять внедрение зависимостей (Inject)

«На каких уровнях можно выполнять внедрение зависимостей (Inject)» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Внедрение зависимостей можно выполнять на нескольких уровнях:

  1. Конструктор (Constructor Injection) - самый распространённый способ. Зависимости передаются через параметры конструктора.
class UserService {
  constructor(private db: Database) {}
}
  1. Сеттеры (Setter Injection) - зависимости устанавливаются через методы-сеттеры.
class AuthService {
  private logger: Logger;

  setLogger(logger: Logger) {
    this.logger = logger;
  }
}
  1. Интерфейсы (Interface Injection) - зависимость внедряется через специальный интерфейс.

  2. Поля класса (Property Injection) - прямое присвоение свойств (менее предпочтительный способ).

Во фронтенде DI часто реализуется через:

  • Ручное внедрение (как в примерах выше)
  • Фреймворки (Angular имеет встроенный DI)
  • Контейнеры зависимостей (InversifyJS, Awilix)