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

Python Middle Без компании
Приведи пример принципа Dependency Inversion
Ответы
Dependency Inversion Principle (DIP) гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня, а оба должны зависеть от абстракций. Пример: ``` from abc import ABC, abstractmethod class NotificationService(ABC): @abstractmethod def send(self, message: str): pass class EmailService(NotificationService): def send(self, message: str): print(f"Sending email: {message}") class SMSService(NotificationService): def send(self, message: str): print(f"Sending SMS: {message}") class NotificationManager: def __init__(self, service: NotificationService): self.service = service def notify(self, message: str): self.service.send(message) # Использование email_notifier = NotificationManager(EmailService()) sms_notifier = NotificationManager(SMSService()) email_notifier.notify("Hello via Email") sms_notifier.notify("Hello via SMS") ``` Здесь `NotificationManager` зависит от абстракции `NotificationService`, а не от конкретных реализаций. Это позволяет легко добавлять новые способы уведомлений без изменения кода менеджера.