單例模式 - Singleton

單例模式確保每個指定的類別只存在一個實例對象,並且可以全局訪問那個實例。一般情況下會使用延時加載的策略,只在第一次需要使用的時候初始化。

注意:在 iOS 中單例模式很常見,NSUserDefaults.standardUserDefaults()UIApplication.sharedApplication()UIScreen.mainScreen()NSFileManager.defaultManager() 這些都是單例模式。

你可能會疑惑了:如果多於一個實例又會怎麼樣呢?程式碼和記憶體有貴重到這個程度嗎?

某些場景下,保持實體物件僅僅只有一份是很有意義的。舉個例子,你的應用程式實體 (UIApplication),應該只有一個吧,顯然是指你的現在當下執行的應用程式。

還有一個例子:行動裝置的螢幕(UIScreen) 實體也是這樣,所以對於這些類別的情況,有實體存在,但是只想要一個實體物件。

單例模式的應用還有另一種情況:你需要一個全域類別來處理設定資料。我們很容易通過單例模式實現安全的執行緒實體存取,而如果有多個類別可以同時存取設定文件,那可就複雜多了。

Last updated