Swift實戰-單例模式

林欣達發表於2016-10-11

783864-2f90a65363d472f9

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。GoF提出了23種設計模式,本系列將使用Swift語言來實現這些設計模式

概述

整個應用生命週期中,只存在唯一一個例項物件的類被稱作單例,所以的模組共同使用這一個物件的設計叫做單例模式

單例模式Singleton具有如下優點:

  • 多個模組共用同一個物件,保證了資料的唯一性
  • 統一邏輯功能,具有較高的靈活性

在iOS開發中,本身也會接觸到不少的系統單例,例如NSNotificaitonCenter通知中心、UIApplication應用單例等類,在swift中主要使用兩種方式進行單例的建立,通常我將使用者資料儲存為單例方便不同模組訪問:

  • 方式1,類內部宣告靜態常量並私有化構造器方法
  • 方式2,使用全域性常量物件

對於從OC轉過來的開發者而言,dispatch_once建立的單例更符合他們的習慣,但在Swift3.0後,這個方法本身已經無法使用了,蘋果在static let修飾變數的實現中已經使用了dispatch_once的方式保證了變數只存在一份。

總結

單例保證了資料在應用執行期間的唯一性,減少了重複記憶體的損耗,但如果單例本身記憶體佔用過大時,又是一種負擔。另一方面,單例的訪問也存在著多執行緒安全的問題,這需要我們合理的使用執行緒鎖來保證單例的穩定性。

上一篇:Swift實戰-原型模式
下一篇:Swift實戰-享元模式

相關文章