Sobes.tech
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.