Я хочу использовать внешний сервер для хранения моего 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 * Может быть, вы можете предоставить пример или ссылки на аналогичные шаблоны или решения.
Возможно, адаптер паттер будет решением?