# 單例模式 (Singleton pattern)
單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個實例。即一個類只有一個對象實例。
單例模式是設計模式中最簡單的形式之一。這一模式的目的是使得類的一個對象成為系統中的唯一實例。要實現這一點,可以從客戶端對其進行實例化開始。因此需要用一種只允許生成對象類的唯一實例的機制,“阻止”所有想要生成對象的訪問。使用工廠方法來限制實例化過程。這個方法應該是靜態方法(類方法),因為讓類的實例去生成另一個唯一實例毫無意義。
Static uniqueInstance是singleton的唯一實例, static sharedInstance將把它返回客戶端。通常,sharedInstance會檢查uniqueInstance是否已經被實例化。如果沒有,它會生成一個實例然后返回uniqueInstance。
單例模式的思路是:一個類能返回一個對象的引用(并且永遠是同一個)和一個獲得該實例的方法(靜態方法,通常使用 getInstance 名稱)。那么當我們調用這個方法時,如果類持有的引用不為空就返回該引用,否者就創建該類的實例,并且將實例引用賦值給該類保持的那個引用再返回。同時將該類的構造函數定義為私有方法,避免其他函數使用該構造函數來實例化對象,只通過該類的靜態方法來得到該類的唯一實例。
## UML類圖
:-: 