Давайте предположим, что у меня есть приложение переднего плана, которое должно извлекать данные из некоторого бэкэнда. И давайте предположим, что есть 2 различные реализации REST API бэкэнда: BackEnd1 и BackEnd2 . Они оба предлагают одинаковую семантику, поэтому клиент может использовать любую из них, но структура их пар ввода / вывода различна.
Чтобы скрыть эти различия, я могу создать интерфейс BackEndInterface
, который определяет методычто клиент вызовет и предоставит 2 класса реализации, BackEndImpl1
и BackEndImpl2
, для BackEnd1 и BackEnd2 соответственно. Какой из них использовать, определяется с помощью механизмов Dependency Injection (DI).
Вопрос в том, можно ли управлять DI с помощью внешней конфигурации и принимать решение при запуске приложения, например, при чтении среды. переменная или файл конфигурации, какую реализацию использовать.