Junior — Middle
Kun je een voorbeeld geven van de implementatie van het principe van afhankelijkheidsomkering in het ontwerp van softwaresystemen?
sobes.tech AI
Antwoord van 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, что облегчает тестирование и замену реализации.