Встречается на собеседованиях • сегодня
Приведи пример использования 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
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы