Встречается на собеседованиях • сегодня

Приведи пример принципа Dependency Inversion

Dependency Inversion Principle (DIP) гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня — оба должны зависеть от абстракций.

Пример без DIP:

javascript
class MySQLDatabase {
  save(data) {
    console.log(`Saving ${data} to MySQL`);
  }
}

class UserService {
  constructor() {
    this.database = new MySQLDatabase(); // Жёсткая зависимость
  }

createUser(user) {
this.database.save(user);
}
}

text

**Пример с DIP:**  
```javascript
class Database {
  save(data) {
    throw new Error('Method not implemented');
  }
}

class MySQLDatabase extends Database {
  save(data) {
    console.log(`Saving ${data} to MySQL`);
  }
}

class MongoDB extends Database {
  save(data) {
    console.log(`Saving ${data} to MongoDB`);
  }
}

class UserService {
  constructor(database) { // Зависимость через абстракцию
    this.database = database;
  }

  createUser(user) {
    this.database.save(user);
  }
}

// Использование
const userService = new UserService(new MongoDB());
userService.createUser('John');

Теперь UserService зависит от абстракции (Database), а не от конкретной реализации.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы