Как выбрать из двух интерфейсов нужный по условию?
Добрый день!
Направьте мысли у нужную строну, не могу решить проблему.
В приложении есть 2 интерфейса Api и ApiDemo. Как понятно из названия, один работает с рабочим сервером, другой с демонстрационным. При запуске приложения пользователь может потестить его в демо-режиме (для этого отдельная кнопка).
Для работы с сервером использую Retrofit 2, и объект рабочего api создается таким образом
Api = new Retrofit.Builder()
.baseUrl(serverAddress + "/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build().create(Api.Class);
Вызывается
App.getApi().auth(userName, password)
Демо api можно создать аналогично в теории.
Флаг "демо-режим" сохраняю в SharedPreference.
Моя проблема в том, что я не пойму как мне связать 2 разных интерфейса в один?
Я хочу, чтобы при вызове App.getApi() - мне возвращался сразу нужный интерфейс (рабочий или демо).
Иначе придется перепиливать кучу когда, и добавлять везде уловие if-else с проверкой текущего режима работы...а этого не хочется.
Может я ошибся с архитектурой изначально?
По идее АПИ на то и интерфейс, что для прода и теста не должен отличаться внешне. То есть, сам интерфейс должен быть один. А различаться должен как раз baseUrl.