Встречается на собеседованиях • сегодня

Приведи пример использования dependency injection для подмены реализации

Dependency injection (DI) позволяет легко подменять реализации зависимостей, что особенно полезно для тестирования. Вот пример:

python
from abc import ABC, abstractmethod

class Logger(ABC):
    @abstractmethod
    def log(self, message: str) -> None:
        pass

class ConsoleLogger(Logger):
    def log(self, message: str) -> None:
        print(message)

class Service:
def init(self, logger: Logger):
self.logger = logger

text
def do_work(self):
    self.logger.log("Working...")

В продакшене используем ConsoleLogger

service = Service(ConsoleLogger())
service.do_work() # Выведет "Working..."

В тестах можно подменить на mock

class MockLogger(Logger):
def log(self, message: str) -> None:
self.last_log = message

mock_logger = MockLogger()
test_service = Service(mock_logger)
test_service.do_work()
assert mock_logger.last_log == "Working..."

text

Ключевые моменты:
1. Зависимость (Logger) определена через абстракцию (ABC)
2. Реализация передается извне через конструктор
3. Можно легко подменять реализации без изменения кода Service
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы