Приведи пример принципа 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`, а не от конкретных реализаций. Это позволяет легко добавлять новые способы уведомлений без изменения кода менеджера.