Контейнер позволяет нам предоставлять требуемые зависимости для классов. Он может создать любой компонент, если класс известен контейнеру. Это пример локатора сервисов?Является ли контейнер IOC примером шаблона Locator Service?
ответ
Нет, контейнер DI не сам по себе является локатором сервисов, но его можно использовать как один. Это полностью зависит от его использования.
Пока вы используете контейнер внутриComposition Root, это not Service Locator. Однако, как только вы используете Контейнер за пределами Корень композиции, вызовы в контейнер (или абстракция над ним) становятся формой Service Locator anti-pattern.
Это Мартин Фаулер article упоминает различие между этими двумя:
Важным различием между этими двумя паттернами о том, что реализация предоставляются класс приложения. С помощью локатора сервисов класс приложения запрашивает его явно сообщением локатору. При инъекции нет явного запроса, служба появляется в классе приложения - следовательно, инверсия элемента управления.
- 1. МОК без Service Locator
- 2. Контейнер IoC. Вводят контейнер
- 3. DI или DI/Service Locator контейнер?
- 4. Поддерживает ли Common Service Locator Mono .NET?
- 5. Теория: «Сервисный локатор» «Контейнер IOC» «IOC» «DI»
- 6. Является ли HibernateSessionFactory примером заводского шаблона
- 7. Является ли это хорошим примером шаблона Singleton?
- 8. Service Locator в Global.asax
- 9. Является ли Service Locator анти-шаблоном в подключаемой архитектуре?
- 10. Легкий контейнер IoC, который работает в Unity3D
- 11. WPF DI Service Locator
- 12. Почему Unity использует Service Locator?
- 13. Является ли контейнер IOC объектом, когда проект развернут?
- 14. Autofac WebAPI Common Service Locator
- 15. Service Locator: Получить весь экспорт
- 16. IoC контейнер для Caliburn.Micro
- 17. IoC/MEF контейнер
- 18. Является ли Java Native Interface (JNI) примером для шаблона адаптера?
- 19. Является ли метод клонирования примером шаблона Prototype в Java?
- 20. Является ли это хорошим примером для шаблона проектирования Decorator?
- 21. Контейнер IOC весной MVC
- 22. Когда использовать контейнер IOC?
- 23. Является ли это примером UITabBarController?
- 24. Является ли функция примером инкапсуляции?
- 25. Является ли это примером рекурсии?
- 26. Создать общий контейнер IoC
- 27. Является ли это хорошим примером использования EclipseLink?
- 28. Если контейнер IoC разрешает контейнер OR Mapper?
- 29. Service Locator с использованием статических методов
- 30. IoC контейнер для Objective-C
Цитата, которую вы используете, находится в «Service Locator vs Dependency Injection». Таким образом, в цитате описывается разница между Injection Dependency и Service Location, но это не отвечает на вопрос. Речь идет о * Контейнере *; инструмент, который может выполнять как впрыскивание зависимостей *, так и * местоположение службы. – Steven