Junior — Middle
91
Könnten Sie ein Beispiel für die Umsetzung des Prinzips der Dependency Inversion im Code geben?
Antwort von AI
sobes.tech KI
Принцип инверсии зависимостей (Dependency Inversion Principle) говорит, что высокоуровневые модули не должны зависеть от низкоуровневых, оба должны зависеть от абстракций (например, интерфейсов или абстрактных классов). В Python это можно реализовать через передачу зависимостей через конструктор или методы (dependency injection).
Пример:
from abc import ABC, abstractmethod
class Database(ABC):
@abstractmethod
def save(self, data):
pass
class MySQLDatabase(Database):
def save(self, data):
print(f"Сохраняем {data} в MySQL")
class UserService:
def __init__(self, db: Database):
self.db = db
def create_user(self, user_data):
# бизнес-логика
self.db.save(user_data)
# Использование
mysql_db = MySQLDatabase()
service = UserService(mysql_db)
service.create_user({'name': 'Иван'})
Здесь UserService зависит не от конкретной реализации базы, а от абстракции Database. Это облегчает замену реализации и тестирование.