單例模式簡談
阿新 • • 發佈:2018-12-16
圖解單例模式
包含的角色
Singleton:單例
優缺點
優點:
提供了對唯一例項的受控訪問。
在系統記憶體只存在一個物件,可以節約資源
可以基於單例模式進行擴充套件,使用與單例控制相似的方法來獲得指定個數的物件例項。
缺點:
單例模式沒有抽象層,因此在擴充套件方面有很大的困難。
單例類的負擔大
目的
保證一個類僅有一個例項,並提供一個訪問他的全域性訪問點。單例模式包含的角色只有一個,就是單例類(Singleton)
經典應用場景
Spring中建立的Bean例項預設都是單例模式存在的;
資料庫連線池設計一般也是採用單例模式;
多執行緒的執行緒池的設計一般也是採用單例模式,這是由於執行緒池要方便對池中的執行緒進行控制;
作業系統的檔案系統,也是大的單例模式實現的具體例子,一個作業系統只能一個檔案系統;
Windows的工作管理員也是一個單例模式的應用。你可以試一下能否同時開啟兩個工作管理員;
Windows的回收站也是一個典型的單例應用。在整個系統執行過程中,回收站一直維護著僅有的一個例項;
java的程式碼實現
public class Singleton{ //懶人式 private static final Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getSingleton(){ return singleton; } }
總結
使用場景一般滿足的條件:
1)資源共享的請改下,避免由於資源操作時導致的效能或損耗等。如上述中的日誌檔案,應用配置。
2)控制資源的情況下,方便資源之間的互相通訊。如執行緒池等。