Как работает Service Locator?

Что именно должен делать сервис локатор? Я прочитал несколько статей, с кторых понял, что он должен отдавать приложению определённые сервисы. Но как именно он это делает? Создаёт обьект и передаёт его или только определяет и конфигурирует, а создаёт фабрика или запускает запрашиваемые классы и их методы внутри себя? Помогите пожалуйста понять.
  • Вопрос задан
  • 5472 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Создаёт обьект и передаёт его или только определяет и конфигурирует, а создаёт фабрика


Именно так. Мы когда регистрируем сервис в сервис локаторе, у нас появляются фабрики сервисов. Они могут быть явными (то есть мы явно пишем код который занимается созданием объектов, например так сделано в pimple) или не явно (всякие автоконфигураторы на основе рефлексий как в PHP-DI или конфиги в Symfony). Так или иначе у нас будут появляться фабрики.

Сервис локатор по запросу сервиса проверяет создавал ли он такой или нет. И если нет - просит фабрику сделать сервис и выплевывает его тому кто запросил.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@novrm
Сервис Локатор - паттерн проектирования.
Реализуется, как класс-контейнер.
Центральный объект - массив, в который заносятся переменные-сервисы, а также информация каким образом создавать эти сервисы:
- непосредственным созданием объекта класса-сервиса,
- создания класса-сервиса через фабрику,
- создания класса-сервиса через абстрактную фабрику,
...
Также возможно создание класса-сервиса единожды или несколько подобных объектов...
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы