Встречается на собеседованиях • сегодня
В чем различия Service Locator и Dependency Injection
Service Locator и Dependency Injection (DI) — это два паттерна для управления зависимостями, но работают они по-разному.
Service Locator — это контейнер, который хранит сервисы и предоставляет их по запросу. Клиент явно запрашивает зависимости, что может скрывать реальные зависимости класса.
python
class ServiceLocator:
_services = {}
@classmethod
def register(cls, name, service):
cls._services[name] = service
@classmethod
def get(cls, name):
return cls._services[name]
locator = ServiceLocator()
locator.register('db', Database())
db = locator.get('db') # Явный запрос зависимости
text
**Dependency Injection** — зависимости передаются классу извне (через конструктор, методы или свойства). Это делает зависимости явными и упрощает тестирование.
```python
class UserService:
def __init__(self, db):
self.db = db # Зависимость инжектируется
db = Database()
user_service = UserService(db) # DI через конструкторКлючевое отличие:
- Service Locator скрывает зависимости (клиент их запрашивает).
- DI делает зависимости явными (внешний код их передает).
DI предпочтительнее, так как он прозрачнее и лучше подходит для тестирования.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы