七天學會設計模式 – Singleton

最近和同事一起購入「七天學會設計模式」,不過書中是以 Java 作為示範語言;

而這邊,我會以 Swift 及 Objective-C 來攥寫範例並補充些內容。

Singleton

如同它的命名一般,在整個 App 運作時,僅會有一個 instance。

Swift

Swift 宣告 Singleton 的方式很簡單,就是在 class 底下宣告一個 static 的常數(constant)。

Objective-C

而 Objective-C 底下,我們要注意一些事情;

在 Multi-Thread 的情況下,我們得避免同時有多個 thread 執行建立 instance,故在創建時,必須使用 dispatch_once_t 來確保僅會有一個 thread 執行 instance = [[SingletonDemo alloc] init];

學會了如何創建 Singleton 之後,可以想想哪些物件適合以這種方式創建;

如「目前登入的使用者」,正是可以用 Singleton 的方式做設計,畢竟一個 App 同時僅能有一位使用者登入,是大多數軟體的設計,而這恰巧符合 Singleton 的精神。