Back to questions
Junior — Middle
63
Можешь привести пример внедрения зависимостей для замены конкретной реализации компонента?
Answer from AI
sobes.tech AI
В Python внедрение зависимостей часто реализуется через передачу конкретной реализации компонента в конструктор или метод класса, что позволяет легко заменить эту реализацию при необходимости.
Пример:
class Database:
def connect(self):
pass
class MySQLDatabase(Database):
def connect(self):
print("Подключение к MySQL")
class MockDatabase(Database):
def connect(self):
print("Подключение к мок базе для тестов")
class Service:
def __init__(self, db: Database):
self.db = db
def perform(self):
self.db.connect()
# Использование с реальной базой
service = Service(MySQLDatabase())
service.perform() # Выведет: Подключение к MySQL
# Использование с мок-объектом для тестирования
test_service = Service(MockDatabase())
test_service.perform() # Выведет: Подключение к мок базе для тестов
Такой подход позволяет легко менять реализацию компонента без изменения кода класса Service.