Что такое Внедрение зависимости (Dependency injection)
Python
Middle
Без компании
Что такое Внедрение зависимости (Dependency injection)
Ответы
Внедрение зависимости (DI) — это паттерн проектирования, при котором зависимости объекта передаются извне, а не создаются внутри самого объекта. Это делает код более гибким, тестируемым и поддерживаемым.
**Пример без DI:**
```
class Database:
def fetch_data(self):
return "Данные из БД"
class Service:
def __init__(self):
self.db = Database() # Зависимость создается внутри класса
def get_data(self):
return self.db.fetch_data()
```
**Пример с DI:**
```
class Database:
def fetch_data(self):
return "Данные из БД"
class Service:
def __init__(self, db: Database): # Зависимость передается извне
self.db = db
def get_data(self):
return self.db.fetch_data()
# Использование
db = Database()
service = Service(db) # Внедряем зависимость
```
**Преимущества DI:**
- Упрощает тестирование (можно передавать mock-объекты)
- Уменьшает связанность кода
- Позволяет легко менять реализации зависимостей