gpt4 book ai didi

cocoa-touch - 连接管理器 : Singleton or not Singleton?

转载 作者:行者123 更新时间:2023-12-01 18:02:59 26 4
gpt4 key购买 nike

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

这么说,您认为 ConnectionManager 是否是单例会更好?

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

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

最佳答案

我和你有过类似的想法,最终得到了这种模式:

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

连接队列 [singleton] - 存储一堆等待完成的请求

请求 - 每次从服务器需要某些东西时创建。它包含所有请求数据(url、参数等)和对委托(delegate)的引用。

回复 - 从服务器检索的数据以及原始请求的容器。

把所有的东西连在一起...

  • ConnectionManager 在启动时启动并创建 ConnectionQueue
  • 当需要调用服务器时,创建一个 Request 对象,传入所有必需的参数并将其添加到 ConnectionQueue
  • 队列让经理知道有一个请求需要处理
  • 管理器从队列中删除请求并调用服务器
  • 收到数据
  • 经理创建响应并将其发送回委托(delegate)人。
  • 关于cocoa-touch - 连接管理器 : Singleton or not Singleton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5896072/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com