Встречается на 19% собеседований по C#
Что такое Service Locator
Service Locator — это паттерн, который предоставляет глобальную точку доступа к сервисам, скрывая их создание и зависимости. В отличие от Dependency Injection, он не передает зависимости явно, а позволяет их запрашивать из контейнера.
Проблемы:
- Скрывает зависимости, усложняя понимание кода.
- Усложняет тестирование (зависимости не заменяются легко).
- Может привести к антипаттерну "God Container".
Пример:
csharp
// Регистрация сервиса
ServiceLocator.Register<ILogger>(new FileLogger());
// Получение сервиса
var logger = ServiceLocator.Resolve<ILogger>();
logger.Log("Hello");Когда использовать?
Редко — только в legacy-коде или специфичных случаях (например, в Unity). Лучше предпочесть DI.
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы