Junior — Middle
¿Puedes dar un ejemplo de la implementación del principio de inversión de dependencias en el diseño de sistemas de software?
sobes.tech AI
Respuesta de la IA
Принцип инверсии зависимостей (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, что облегчает тестирование и замену реализации.