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

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


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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 14:02
5000 руб./за проект
24 апр. 2024, в 13:45
15000 руб./за проект
24 апр. 2024, в 13:32
300 руб./за проект