這只是本身學習的筆記。 java
簡單的說就是一個類只能建立一個實體(實體1 == 實體2), android
通常狀況下一個類能夠建立無數個實體,好比一個class Cat 函數
cat1 = new Cat(); 學習
cat2 = new Cat(); 測試
cat1 == cat2 返回的是false。 spa
要想cat1 == cat2,就用單利模式,這樣有什麼好處:在 計算機系統中,線程池、打印機、顯卡的驅動程序對象常被設計成單例。這些應用都或多或少具備資源管理器的功能。每臺計算機能夠有 若干個打印機,但只能有一個Printer Spooler,以免兩個打印做業同時輸出到打印機中。 .net
正常 線程
單利模式 設計
能夠這樣想:java static的變量只有一個,屬於類,那就能夠利用這個關鍵字。建立一個實體能夠用new或者寫一個方法。若是new的話,就會在堆中建立的對象不等。能夠用一個靜態方法獲取一個實體,而獲取的這個實體應該是一個靜態static的變量,這樣的話,就能夠實現上面的要求了。構造函數要寫成私有的,防止用new建立實體。上圖的單利cat實例不是在堆中建立的,是在靜態區建立的,只是爲了好對比。測試類 code
class Cat { private static Cat cat; private Cat() { } public static Cat getCat() { if (cat == null) { cat = new Cat(); } return cat; } public static void main(String[] args) { Cat cat1 = Cat.getCat(); Cat cat2 = Cat.getCat(); System.out.println(cat1 == cat2); } }
寫法有不少種,能夠參考這個:
http://blog.csdn.net/jason0539/article/details
/23297037
我只是寫的簡單經常使用的一個,android開發中用到的volley
就能夠寫一個單利,官網推薦的。以下說明: