Invertion of Control — это принцип, который позволяет нам инвертировать зависимости, т.е. отвязать контракт и имплементацию.
В данном контексте (прикладного инструментария) он реализуется в двух видах (паттернах): Service Locator — из перевода нетрудно догадаться, что в данном случае мы знаем, где искать сервисы, о чём и сообщаем с помощью: ServiceLocator.GetDependency Injection — так же из перевода нетрудно понять, что в данном случае смысл в инъекции зависимости, в конструктор, свойства и т.д. Прелесть DI в том, что обычно вы не превязаны ни к какой инфраструктуре, если конечно не используете, что-нибудь на подобии зависимых от фреймворка аннотаций ([Inject] @Inject)
DI либо SL по-раздельности использовать на практике не получается, поэтому оба принципа комбинируются.
В данном контексте (прикладного инструментария) он реализуется в двух видах (паттернах):
Service Locator — из перевода нетрудно догадаться, что в данном случае мы знаем, где искать сервисы, о чём и сообщаем с помощью: ServiceLocator.GetDependency Injection — так же из перевода нетрудно понять, что в данном случае смысл в инъекции зависимости, в конструктор, свойства и т.д. Прелесть DI в том, что обычно вы не превязаны ни к какой инфраструктуре, если конечно не используете, что-нибудь на подобии зависимых от фреймворка аннотаций ([Inject] @Inject)
DI либо SL по-раздельности использовать на практике не получается, поэтому оба принципа комбинируются.