Назад к вопросам
ОТП Банк
Junior — Middle
65
Можешь привести пример идеи инвертирования зависимостей в проектировании программных систем?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Идея инвертирования зависимостей (Dependency Inversion Principle) заключается в том, что высокоуровневые модули не должны зависеть от низкоуровневых, а оба должны зависеть от абстракций (например, интерфейсов). Это позволяет снизить связанность и повысить гибкость кода.
Пример на Java:
interface MessageSender {
void send(String message);
}
class EmailSender implements MessageSender {
public void send(String message) {
System.out.println("Sending email: " + message);
}
}
class NotificationService {
private MessageSender sender;
public NotificationService(MessageSender sender) {
this.sender = sender;
}
public void notifyUser(String message) {
sender.send(message);
}
}
// Использование:
MessageSender emailSender = new EmailSender();
NotificationService service = new NotificationService(emailSender);
service.notifyUser("Hello!");
Здесь NotificationService зависит не от конкретной реализации EmailSender, а от абстракции MessageSender. Это позволяет легко менять способ отправки сообщений без изменения сервиса.