Junior — Middle
63
Возможна ли реализация принципа инверсии зависимостей без использования внедрения зависимостей?
AI-дан жауап
sobes.tech AI
Да, принцип инверсии зависимостей (Dependency Inversion Principle) можно реализовать без использования специализированных инструментов внедрения зависимостей (Dependency Injection).
Главная идея — зависеть от абстракций, а не от конкретных реализаций. В Python это можно сделать вручную, передавая зависимости через параметры функций или конструкторы классов.
Пример:
class Database:
def get_data(self):
return "data from DB"
class Service:
def __init__(self, db): # db — абстракция или конкретный объект
self.db = db
def process(self):
data = self.db.get_data()
print(f"Processing {data}")
# Использование
my_db = Database()
service = Service(my_db) # вручную передаем зависимость
service.process()
Таким образом, внедрение зависимостей происходит явно и без специальных фреймворков. Это облегчает тестирование и поддержку кода.