Изменить шаблон поставщика RestAPI без изменения поведения проекта - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу использовать внешний сервер для хранения моего REST API и базы данных. Для этого я нашел сервис https://www.back4app.com.

Я хочу спроектировать свою архитектуру, когда я могу немедленно изменить сервис REST API без дополнительного кодирования или хотя бы с небольшими изменениями.

Взгляните на этот код:

PFUser.logInWithUsername(inBackground: username, password: password) { (user, error) in }

это войдет в систему пользователя и вернет назад некоторое успешное или неудачное событие.

Я могу добавить этот код выше к своему APIService Класс и создайте пользовательскую функцию:

APIService {

    func loginUser(userName: String, password: String) {

    PFUser.logInWithUsername(inBackground: username, password: password) { (user, error) in }

    }

}

Я не буду добавлять здесь код обратного вызова, но предполагая, что loginUser передаст обратно некоторый пользовательский объект, который я смогу обработать позже в клиентском коде (скажем, в некотором контроллере представления или интерактив).

Здесь я хочу спросить, как правильно написать код для замены:

PFUser.logInWithUsername(inBackground: username, password: password) { (user, error) in

на скажем:

Firebase.logInWithUsername(username, password: password) { (user, error) in // (raw code)

Теоретически в В какой-то момент, если мы рассмотрим переход от back4app к firebase, я могу просто сказать моему APIService, что теперь вашим провайдером будет какой-то firebase объект, и никакой другой компонент не потребует какого-либо кодирования или экстремальных изменений в проекте.

* 10 29 * Может быть, вы можете предоставить пример или ссылки на аналогичные шаблоны или решения.

Возможно, адаптер паттер будет решением?

...