Sobes.tech
Back to questions
Junior — Middle
84

Объясните принцип работы паттерна сервис локатор и его основные особенности.

Companies where asked
IT OneIT One
DevCats

Answer from AI

sobes.tech AI

Паттерн сервис локатор — это способ организации доступа к зависимостям и сервисам в приложении через централизованный объект (локатор). Вместо того, чтобы явно передавать зависимости, компоненты запрашивают нужные сервисы у сервис локатора.

Основные особенности:

  • Централизованное управление зависимостями.
  • Упрощение кода компонентов, так как они не знают, как создаются сервисы.
  • Возможность подмены реализаций сервисов в одном месте.

Однако паттерн критикуют за то, что он скрывает зависимости, усложняя тестирование и понимание кода, так как зависимости неявны.

Пример использования:

class ServiceLocator {
  constructor() {
    this.services = new Map();
  }

  register(name, instance) {
    this.services.set(name, instance);
  }

  get(name) {
    return this.services.get(name);
  }
}

const locator = new ServiceLocator();
locator.register('logger', console);

const logger = locator.get('logger');
logger.log('Сообщение');

В тестах можно заменить сервисы на моки, регистрируя их в локаторе.