Я пытаюсь создать и реализовать инфраструктуру для связи с сервером (это iOS-инфраструктура, написанная в Swift). Задача, с которой я столкнулся, - это архитектура - есть два способа общения с сервером, и я должен реализовать оба (разные версии). Я действительно хочу добиться наличия клиента без гражданства с такими методами, как: Client.authenticate()
или Client.downloadFile()
. Проблема заключается в том, имея две реализации, я бы в конечном итоге с помощью методов в моем классе Client, как этот:Правильный подход к архитектуре архитектуры клиент-сервер (разные версии сервера)
public class func authenticate(state: state) {
if (state.type == 1) {
Client1.authenticate(state)
} else {
Client2.authenticate(state)
}
}
Повторные для каждого метода ...
Я хотел изначально держать клиента, как это - stateless и static и имеют только объекты состояния, которые содержат фактическое состояние, так как может быть много соединений с сервером с различными состояниями. Тем самым я хотел избежать того, чтобы клиент был как объект, и оба держали состояние и выполняли вызовы на сервер. Проблема в том, что этот подход просто ... грязный, я думаю. Что было бы более сухим, читаемым и устойчивым способом сделать это?
Спасибо за ваш ответ, который я дал на свою первую первоначальную идею и на самом деле то, что вы suggested.I может видеть, что я не смог выяснить основную вещь, которую я хотел достичь - Клиент является статический класс (не инициализированный объект). Как бы я не вызвал POST в Alamofire (без инициализации клиента), я хотел вызвать методы на статическом клиенте (каждый раз вводить состояние). Задача заключалась в том, как это сделать, когда мне нужно две реализации клиента - я должен был бы иметь «маршрутизатор», чтобы вызывать «Client.performSth()» без «пользователя» SDK, который должен указать какой из них (Client1 или Client2). – Michal
Затем, как определить, какой клиент использовать через объект состояния. Но это сгенерировало бы метод, который я опубликовал в своем вопросе, - для каждого метода, который я бы хотел разоблачить - то же самое с коммутатором, вызвав правильную реализацию ... – Michal
Хорошо, теперь я понимаю. Я отредактировал свой ответ. –