設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。GoF提出了23種設計模式,本系列將使用Swift語言來實現這些設計模式
概述
整個應用生命週期中,只存在唯一一個例項物件的類被稱作單例
,所以的模組共同使用這一個物件的設計叫做單例模式
單例模式Singleton
具有如下優點:
- 多個模組共用同一個物件,保證了資料的唯一性
- 統一邏輯功能,具有較高的靈活性
在iOS開發中,本身也會接觸到不少的系統單例,例如NSNotificaitonCenter
通知中心、UIApplication
應用單例等類,在swift中主要使用兩種方式進行單例的建立,通常我將使用者資料儲存為單例方便不同模組訪問:
- 方式1,類內部宣告靜態常量並私有化構造器方法
12345class UserInfo {static let sharedInfo = UserInfo()private init() {}} - 方式2,使用全域性常量物件
1234567let singleton = UserInfo()class UserInfo {class var sharedInfo : UserInfo {return singleton}}
對於從OC
轉過來的開發者而言,dispatch_once
建立的單例更符合他們的習慣,但在Swift3.0
後,這個方法本身已經無法使用了,蘋果在static let
修飾變數的實現中已經使用了dispatch_once
的方式保證了變數只存在一份。
總結
單例保證了資料在應用執行期間的唯一性,減少了重複記憶體的損耗,但如果單例本身記憶體佔用過大時,又是一種負擔。另一方面,單例的訪問也存在著多執行緒安全的問題,這需要我們合理的使用執行緒鎖來保證單例的穩定性。
上一篇:Swift實戰-原型模式
下一篇:Swift實戰-享元模式