設計模式——單件模式

《Head First設計模式》筆記整理...歡迎交流...設計模式

定義

確保一個類只有一個實例,並提供一個全局的訪問點。

有一些對象咱們只須要一個,好比說線程池(threadpool)、緩存(cache)、對話框...事實上,這個類對象只能有一個實例,若是創造出多個實例,就會致使許多問題產生,例如行爲異常、資源使用過量,或者結果不一致。緩存

怎麼辦呢?多線程

使用靜態變量、靜態方法和適當的修飾符。函數

由於引用一個靜態方法,你須要使用類名。spa

public MyClass {
    private MyClass() {}
    
    public static MyClass getInstance() {
        return MyClass();
    }
}

調用線程

MyClass.getInstance(); //引用靜態方法,須要使用類名

類圖

圖片描述

代碼

public class Singleton {
    private static Singleton uniqueInstance; //利用一個驚天變量來記錄Singleton類的惟一實例
    
    ... //這裏是其它有用的實例化變量
    
    private Singleton() {}  //把構造函數聲明爲私有的,只有singleTon類內才能夠調用
    
    public static Singleton getInstance() {  
        if(uniqueInstance == null) {
            uniqueInstance = new Singleton();
        }
        
        return uniqueInstance;
    }
    
    ... //這裏是其它有用的方法
}

多線程在本章就不寫了,感興趣的同窗能夠本身的研究下。設計

相關文章
相關標籤/搜索