Диспетчер подключений: Singleton или нет Singleton? - PullRequest
1 голос
/ 05 мая 2011

Мое приложение iOS выполняет много разных запросов к веб-сервису.Каждый запрос является вызовом метода объекта ConnectionManager.Когда ответ поступает из веб-службы, вызывается метод делегата для уведомления заинтересованного получателя.Более того, для поддержания активности сеанса требуется опрос каждые X секунд.

Сказал, так что, по вашему мнению, лучше, если ConnectionManager является Singleton или нет?

Singleton проще (потому что мне не нужно передавать ссылку на ConnectionManager всем тем, кому нужно сделать запрос к веб-службе, или мне не нужно создавать больше ConnectionManager).Более того, проблему опроса легко решить: я просто добавляю два метода startPolling и stopPolling в ConnectionManager.Но я не люблю использовать делегатов с одним значком (потому что может быть только один делегат, и что происходит, если ответ приходит, когда нет одного набора?), И в то же время я не люблю использовать уведомления.Мне тоже не нравится синглтон:)

У вас есть совет по альтернативным моделям?

Ответы [ 2 ]

5 голосов
/ 05 мая 2011

Я прошел через то же мышление, что и вы, и в итоге получил следующую модель:

ConnectionManager [singleton] - отвечает за поддержание соединения с сервером и отправку и получение запросов

ConnectionQueue [singleton] - хранит стек запросов, ожидающих выполнения

Запрос - Создается каждый раз, когда что-то требуется от сервера. Он содержит все данные запроса (URL, параметры и т. Д.) И ссылку на делегата.

Ответ - Контейнер для данных, полученных с сервера вместе с исходным запросом.

Соединить все вместе ...

  1. ConnectionManager запускается при запуске и создает ConnectionQueue
  2. Когда требуется вызов на сервер, создайте объект Request, передайте все необходимые параметры и добавьте его в ConnectionQueue
  3. Очередь сообщает менеджеру, что есть запрос, который нужно обработать
  4. Менеджер удаляет запрос из очереди и делает звонок на сервер
  5. данные получены
  6. Менеджер создает ответ и отправляет его обратно делегату.
0 голосов
/ 05 мая 2011

Вы можете увидеть этот другой пост: .Я думаю, что это может быть полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...