2010-12-05 63 views
1

one of my other questions的評論讓我想到了。現在我正在使用一個單身人士Session。它是一個連接到我的服務器的持續TCP連接的封裝。它應該在應用程序啓動時連接,並在應用程序的整個生命週期中保持連接狀態。我只需要1(從同一應用程序到我的服務器有多個連接是沒有意義的)。它應該是全球可訪問的。這個對象應該是單身嗎?

對於這種對象使用單例是不好的設計嗎?

+0

是的,當然。這是一個單身人士。 – Fattie 2016-07-04 13:10:31

回答

2

如果永遠不會超過1,並且它需要全局可用,那麼單例模式在這裏確實有意義。但是,這個信息沒有包含在你之前的問題中,這就是爲什麼我按照我的方式評論它的原因。

太多的人依靠單身來解決問題很容易,而不是找到真正的問題解決方案。在這種情況下,我將在iOS設備上繪製一個與UIScreen或平行的圖:

UIScreen有一個mainScreen singleton,它指的是您的iPhone,iPad上的屏幕,無論如何。這些設備上只能有一個主屏幕。

相反,UIDevice有一個currentDevice類方法達到相同的目的:只能有一個設備。

2

不,這個單例模式對於這個應用聽起來相當不錯。我在我的一個應用程序中也有類似的情況,其中一個班級管理着一個iAd的實例。我不想一次又一次地加載廣告,具體取決於窗口;我只是想把它洗牌。

同樣,你有一個你想要維護的會話;單身人士的替代方案是在AppDelegate中初始化它,並從應用程序中訪問它。這在功能上等同於單身模式,但實際上更加笨拙,因爲你真的只是在一個你認識的班上嘮叨。