Мартин Фаулер написал статью о DI против локаторов :
Для DI:
- Проще определить, какие зависимости у компонента - смотритеat constructor.
- Компонент не зависит от Service Locator, поэтому не возникает проблем, если компонент используется с другой структурой.
- DI может упростить тестирование, но хороший механизм Service Locatorсделает заглушку одинаково осуществимой.
Лично я не думаю, что с первым подходом, основанным на локаторе, есть что-то изначально плохое - я думаю, что DI действительно стандартизирует это, поэтому, если оно доступно, я бы использовал его.Все хорошие идеи в какой-то момент становятся основой, так что вот что здесь произошло.Кроме того, с помощью DI вы можете использовать другие аннотации, области видимости и т. Д. Без необходимости развертывания собственного кода.И чем меньше кода на заказ, тем лучше IMO.Я оставлю последнее слово Фаулеру:
Выбор между локатором службы и внедрением зависимости менее важен, чем принцип отделения конфигурации службы от использования служб в приложении.