定義:確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例
類圖
優缺點:
優:1. 內存中僅一個實例,故減少了內存開支
2. 由於只生成一個實例,故減少了系統性能開銷(如讀取配置,產生依賴對象等,利用常駐內存的方式,僅生成一個對象
3.可以避免對資源的多重佔用(如只有一個實例存在,避免對同一資源文件同時寫操作)
缺: 1. 單例模式沒有接口,擴展困難
2. 與單一職責原則有衝突
使用場景
1. 要求生成唯一序列號的環境
2. 整個項目需要一個共享訪問點或共享數據(如web頁面的計數器)
3. 創建一個對象需要消耗的資源過多時
注意事項
單例模式的另外一種實現方式,存在線程不安全問題
有時候我們要求一個類有兩三個對象?單例模式如何解決?
通用代碼