Singleton Pattern
確保一個類只有一個實例,並提供一個全局訪問點。
Example: 資料庫連線
單例模式只會將類別分為一類,即 單例類別 (Singleton) 。
單例類別會管理實例的產生,並提供存取實例的方法。
優點:
可以確保類別只有一個實例。
可以提供全局訪問點。
缺點:
違反單一職責原則。
實現單例時,須考慮多線程問題。
因其特殊性,單例模式不容易作測試。
與全域變數的比較:
單例模式可以嚴格地控制客戶如何存取它及何時使用它,
並且具有狀態(可在執行時發生改變)。
ʕ •ᴥ•ʔ:單例模式常被視為一種反模式 (anti-pattern)。
很可能是設計模式中,唯一一個違反單一職責原則。