Назад к вопросам
Junior — Middle
122
Можешь привести пример реализации принципа инверсии зависимостей в проектировании программных систем?
Ответ от нейросети
sobes.tech AI
Принцип инверсии зависимостей (Dependency Inversion Principle) заключается в том, что высокоуровневые модули не должны зависеть от низкоуровневых, а оба должны зависеть от абстракций (интерфейсов). В Node.js это можно реализовать через внедрение зависимостей (Dependency Injection).
Пример:
// Абстракция
class Logger {
log(message) {
throw new Error('Method 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 зависит не от конкретного ConsoleLogger, а от абстракции Logger, что облегчает тестирование и замену реализации.