Инструменты пользователя

Инструменты сайта


php:shablony_proektirovanija:additionally:service_locator

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
php:shablony_proektirovanija:additionally:service_locator [2023/08/07 23:41]
werwolf
php:shablony_proektirovanija:additionally:service_locator [2023/08/07 23:45] (текущий)
werwolf [4.1.3. Диаграмма UM]
Строка 1: Строка 1:
-====== 4.1. Локатор Служб (Service Locator) ======+====== 4.1. Локатор Служб (Service Locator)======
  
 **Этот шаблон считается анти-паттерном!** **Этот шаблон считается анти-паттерном!**
Строка 5: Строка 5:
 Некоторые считают Локатор Служб анти-паттерном. Он нарушает принцип инверсии зависимостей ([[https://​ru.wikipedia.org/​wiki/​Принцип_инверсии_зависимостей|Dependency Inversion principle]]) из набора принципов [[https://​ru.wikipedia.org/​wiki/​SOLID|SOLID]]. Локатор Служб скрывает зависимости данного класса вместо их совместного использования,​ как в случае шаблона Внедрение Зависимости ([[https://​ru.wikipedia.org/​wiki/​Внедрение_зависимости|Dependency Injection]]). В случае изменения данных зависимостей мы рискуем сломать функционал классов,​ которые их используют,​ вследствие чего затрудняется поддержка системы. Некоторые считают Локатор Служб анти-паттерном. Он нарушает принцип инверсии зависимостей ([[https://​ru.wikipedia.org/​wiki/​Принцип_инверсии_зависимостей|Dependency Inversion principle]]) из набора принципов [[https://​ru.wikipedia.org/​wiki/​SOLID|SOLID]]. Локатор Служб скрывает зависимости данного класса вместо их совместного использования,​ как в случае шаблона Внедрение Зависимости ([[https://​ru.wikipedia.org/​wiki/​Внедрение_зависимости|Dependency Injection]]). В случае изменения данных зависимостей мы рискуем сломать функционал классов,​ которые их используют,​ вследствие чего затрудняется поддержка системы.
  
-===== 4.1.1. Назначение =====+===== 4.1.1. Назначение=====
  
 Для реализации слабосвязанной архитектуры,​ чтобы получить хорошо тестируемый,​ сопровождаемый и расширяемый код. Паттерн Инъекция зависимостей (DI) и паттерн Локатор Служб — это реализация паттерна Инверсия управления (Inversion of Control, IoC). Для реализации слабосвязанной архитектуры,​ чтобы получить хорошо тестируемый,​ сопровождаемый и расширяемый код. Паттерн Инъекция зависимостей (DI) и паттерн Локатор Служб — это реализация паттерна Инверсия управления (Inversion of Control, IoC).
  
-===== 4.1.2. Использование =====+===== 4.1.2. Использование=====
  
 С ''​Локатором Служб''​ вы можете зарегистрировать сервис для определенного интерфейса. С помощью интерфейса вы можете получить зарегистрированный сервис и использовать его в классах приложения,​ не зная его реализацию. Вы можете настроить и внедрить объект Service Locator на начальном этапе сборки приложения. С ''​Локатором Служб''​ вы можете зарегистрировать сервис для определенного интерфейса. С помощью интерфейса вы можете получить зарегистрированный сервис и использовать его в классах приложения,​ не зная его реализацию. Вы можете настроить и внедрить объект Service Locator на начальном этапе сборки приложения.
  
-===== 4.1.3. Диаграмма ​UML ​=====+===== 4.1.3. Диаграмма ​UM =====
  
-{{..:..:_images:uml23.png|Alt ServiceLocator UML Diagram}}===== 4.1.4. Код =====+{{:php:shablony_proektirovanija:additionally:​121wqsd.png |}
 +}===== 4.1.4. Код =====
  
 Вы можете найти этот код на [[https://​github.com/​domnikl/​DesignPatternsPHP/​tree/​main/​More/​ServiceLocator|GitHub]] Вы можете найти этот код на [[https://​github.com/​domnikl/​DesignPatternsPHP/​tree/​main/​More/​ServiceLocator|GitHub]]
Строка 105: Строка 106:
 </​code>​ </​code>​
  
-===== 4.1.5. Тест =====+===== 4.1.5. Тест=====
  
 Tests/​ServiceLocatorTest.php Tests/​ServiceLocatorTest.php
php/shablony_proektirovanija/additionally/service_locator.1691440867.txt.gz · Последние изменения: 2023/08/07 23:41 — werwolf