该对象应该是单身吗?

时间:2010-12-05 16:12:05

标签: iphone objective-c design-patterns architecture singleton

one of my other questions的评论让我思考。现在我正在使用单身Session。它是对我的服务器的常量TCP连接的封装。它应该在应用程序启动时连接,并在应用程序的整个生命周期内保持连接。我只需要1(从同一个应用程序与我的服务器建立多个连接是没有意义的)。它应该是全球可访问的。

对这种物体使用单例是不好的设计?

2 个答案:

答案 0 :(得分:2)

如果永远不会超过1,并且它需要全局可用,那么单例模式在这里确实有意义。但是,这些信息被遗漏在您之前的问题中,这就是我按照我的方式对其进行评论的原因。

很多人依靠单身人士轻松解决问题,而不是找到问题的真正解决方案。在这种情况下,我会在iOS设备上与UIScreenUIDevice并行显示:

UIScreen有一个mainScreen单身,指的是你的iPhone,iPad上的屏幕等等。这些设备上只能有一个主屏幕。

相反,UIDevice有一个currentDevice类方法,它实现了同样的目的:只能有一个设备。

答案 1 :(得分:2)

不,单身模式听起来非常适合这个应用程序。我的应用程序中有类似的情况,有一个管理iAd实例的类。我不想一遍又一遍地加载广告,具体取决于窗口;我只是想把它洗牌。

同样,您有一个想要维护的会话;单例的替代方法是在AppDelegate中初始化它并从应用程序周围访问它。这在功能上等同于单身模式,但是相当笨拙,因为你真的只是在你知道会坚持的课程上捎带。