Sobes.tech
Back to questions
Junior — Middle
86

Какое значение имеет буква D в принципах SOLID?

Answer from AI

sobes.tech AI

Буква D в принципах SOLID означает Dependency Inversion Principle — принцип инверсии зависимостей.

Этот принцип гласит, что:

  • Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
  • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Проще говоря, вместо того чтобы напрямую создавать или использовать конкретные реализации, код должен работать с абстракциями (например, интерфейсами). Это повышает гибкость, облегчает тестирование и поддержку.

Пример на Node.js с использованием интерфейса (через соглашение):

// Абстракция
class Logger {
  log(message) {
    throw new Error('Not implemented');
  }
}

// Конкретная реализация
class ConsoleLogger extends Logger {
  log(message) {
    console.log(message);
  }
}

// Модуль верхнего уровня
class UserService {
  constructor(logger) {
    this.logger = logger;
  }

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

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

Таким образом, UserService зависит от абстракции Logger, а не от конкретной реализации.