Встречается на 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
интервью вопросы и ответы