Sobes.tech
Junior — Middle

What is the significance of the letter D in the SOLID principles?

sobes.tech AI

Answer from AI

The letter D in the SOLID principles stands for Dependency Inversion Principle — the principle of dependency inversion.

This principle states that:

  • High-level modules should not depend on low-level modules. Both should depend on abstractions.
  • Abstractions should not depend on details. Details should depend on abstractions.

In simpler terms, instead of directly creating or using concrete implementations, the code should work with abstractions (e.g., interfaces). This increases flexibility, makes testing easier, and simplifies maintenance.

Example in Node.js using an interface (by convention):

// Abstraction
class Logger {
  log(message) {
    throw new Error('Not implemented');
  }
}

// Concrete implementation
class ConsoleLogger extends Logger {
  log(message) {
    console.log(message);
  }
}

// High-level module
class UserService {
  constructor(logger) {
    this.logger = logger;
  }

  createUser(name) {
    // ... create user
    this.logger.log(`User ${name} created`);
  }
}

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

Thus, UserService depends on the abstraction Logger, not on a specific implementation.