连接管理器:Singleton还是不Singleton?

Dev*_*Dev 1 singleton cocoa-touch design-patterns ios

我的iOS应用程序对Web服务提出了很多不同的请求.每个请求都是对ConnectionManager对象的方法的调用.当响应从Web服务到达时,调用委托的方法来通知感兴趣的接收者.此外,为了保持会话活动,需要每X秒轮询一次.

这么说,在你看来,如果ConnectionManager是一个Singleton,它会更好吗?

单例更简单(因为我不必将ConnectionManager的引用传递给所有需要向Web服务请求的人,或者我不必创建更多的ConnectionManagers).而且,很容易处理轮询问题:我只需在ConnectionManager上添加两个方法startPolling和stopPolling.但是我不喜欢使用带有单例的委托(因为只有一个委托,如果没有一个集合时响应就会发生什么?)同时我不喜欢使用通知.我也不喜欢单身人士:)

你对替代模式有什么建议吗?

Sig*_*Sig 5

我和你一样经历了类似的思考,最终得到了这种模式:

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

ConnectionQueue [singleton] - 存储一堆等待完成的请求

请求 - 每次从服务器需要某些内容时创建.它包含所有请求数据(url,params等)和对委托的引用.

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

将它们连在一起......

  1. ConnectionManager在启动时启动,它会创建ConnectionQueue
  2. 当需要调用服务器时,创建一个Request对象,传入所有必需的参数并将其添加到ConnectionQueue
  3. 队列让经理知道有需要处理的请求
  4. 管理器从队列中删除请求并调用服务器
  5. 收到数据
  6. 管理器创建响应并将其发送回委托.