1. 程式人生 > >單例模式簡談

單例模式簡談

 圖解單例模式

 

包含的角色

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)控制資源的情況下,方便資源之間的互相通訊。如執行緒池等。