《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; } ... //這裏是其它有用的方法 }
多線程在本章就不寫了,感興趣的同窗能夠本身的研究下。設計