我的iOS应用程序对Web服务执行许多不同的请求。每个请求都是对ConnectionManager对象的方法的调用。当响应从Web服务到达时,将调用委托的方法来通知感兴趣的接收者。此外,为了保持 session Activity ,需要每X秒轮询一次。

这样说,您认为ConnectionManager是否为Singleton更好?

单例更简单(因为我不必将ConnectionManager的引用传递给所有需要向Web服务提出请求的人员,或者我不必创建更多的ConnectionManager)。此外,很容易处理轮询问题:我仅在ConnectionManager上添加了两个方法startPolling和stopPolling。但是我不喜欢将委托与一个单例一起使用(因为只能有一个委托,如果在没有一组委托的情况下出现响应,会发生什么情况?),同时我也不喜欢使用通知。我也不喜欢单身人士:)

您对替代模式有何建议?

最佳答案

我经历了与您类似的想法,并最终想到了这种模式:

ConnectionManager [singleton]-负责维护与服务器的连接并提交和接收请求

ConnectionQueue [singleton]-存储一堆等待执行的请求

请求-每次需要服务器提供内容时创建。它包含所有请求数据(URL,参数等)和对委托的引用。

响应-从服务器检索到的数据以及原始请求的容器。

钩在一起...

  • ConnectionManager在启动时启动,并创建ConnectionQueue
  • 需要调用服务器时,创建一个Request对象,传入所有必需的参数并将其添加到ConnectionQueue
  • 队列让经理知道有一个需要处理的请求
  • 管理器从队列中删除请求并调用服务器
  • 收到数据
  • 管理器创建响应并将其发送回委托。
  • 10-08 06:05