單例模式主要用於:有一些對象我們只需要一個,比如:線程池、緩存、對話框、處理偏好設置、注冊表對象、日志對象以及配置文件對象、數據庫連接對象等等。單例模式常用於管理共享資源,例如:數據庫連接或者線程池。
Java Singleton模式就為我們提供了這樣實現的可能。使用Singleton的好處還在於可以節省內存,因為它限制了實例的個數,有利Java垃圾回收(garbagecollection)。
這些對象只能有一個實例,如果制造出多個實例,就會導致很多問題如:程序異常、資源使用過量等。
單例模式很像靜態類,它自身有一個全局訪問點但是又沒有全局變量的缺點:如果將一個對象賦值給一個全局變量,那麼你必須在程序一開始的時候就得創建好對象,如果執行過程中沒有用到,就會非常耗費資源。
單例模式主要有三個部分:
1.私有構造方法:防止外部實例化,只有內部可以實例化
2.有一全局靜態方法:
(1).可以訪問私有的構造方法進行實例化。
(2).外部調用靜態方法,如果存在singleton實例就返回,如果不存在則創建一個實例.自己進行對實例進行管理.
3.靜態變量:利用一個靜態變量來記錄Singleton的唯一實例。
單例模式的UML非常簡單,但是真正用好單例模式,也是有點難度的
單例模式的源代碼如下: