我的iOS应用程序对Web服务执行许多不同的请求。每个请求都是对ConnectionManager对象的方法的调用。当响应从Web服务到达时,将调用委托的方法来通知感兴趣的接收者。此外,为了保持 session Activity ,需要每X秒轮询一次。
这样说,您认为ConnectionManager是否为Singleton更好?
单例更简单(因为我不必将ConnectionManager的引用传递给所有需要向Web服务提出请求的人员,或者我不必创建更多的ConnectionManager)。此外,很容易处理轮询问题:我仅在ConnectionManager上添加了两个方法startPolling和stopPolling。但是我不喜欢将委托与一个单例一起使用(因为只能有一个委托,如果在没有一组委托的情况下出现响应,会发生什么情况?),同时我也不喜欢使用通知。我也不喜欢单身人士:)
您对替代模式有何建议?
最佳答案
我经历了与您类似的想法,并最终想到了这种模式:
ConnectionManager [singleton]-负责维护与服务器的连接并提交和接收请求
ConnectionQueue [singleton]-存储一堆等待执行的请求
请求-每次需要服务器提供内容时创建。它包含所有请求数据(URL,参数等)和对委托的引用。
响应-从服务器检索到的数据以及原始请求的容器。
钩在一起...