@sam_u

Как выбрать из двух интерфейсов нужный по условию?

Добрый день!
Направьте мысли у нужную строну, не могу решить проблему.

В приложении есть 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 с проверкой текущего режима работы...а этого не хочется.
Может я ошибся с архитектурой изначально?
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
По идее АПИ на то и интерфейс, что для прода и теста не должен отличаться внешне. То есть, сам интерфейс должен быть один. А различаться должен как раз baseUrl.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы