確保乙個類只有乙個例項,並且自動例項化並向整個系統提供這個例項
私有化該類的建構函式。
通過new在本類中建立乙個本類物件。
定義乙個公有的方法,將在該類中所建立的物件返回。
需要頻繁例項化然後銷毀的物件。
建立物件時耗時過多或者耗資源過多,但經常用到,用此方法提前載入。
有狀態的工具類物件。
頻繁訪問資料庫或檔案的物件。
只能使用單例類提供的方法得到單例物件,不能使用反射,否則會例項化新物件。
//使用反射
class c = class.forname(singleton.class.getname());
constructor ct = c.getdeclaredconstructor();
ct.setaccessible(true);
singleton singleton = (singleton)ct.newinstance();
不要斷開單例類物件與類中靜態引用的危險操作。gc可能會**該物件。
多執行緒使用單例使用共享資源時,注意執行緒安全問題。
//懶漢式
public class singletonlanhan
private static singletonlanhan singletonlanhan;
public static singletonlanhan getinstance() }}
return singletonlanhan;
}}//餓漢式
public class singletonehan
private static singletonehan singletonehan = new singletonehan();
public static singletonehan getinstance()
}
設計模式1 單例模式
文章引用出處 singleton模式是最簡單最常用的設計模式。1,定義 確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個該類。2,單例模式優點 1 單例模式在記憶體中只有乙個例項,減少了記憶體的開支。2 單例模式只生成乙個例項模式,減少了系統效能的開銷。如當乙個物件的產生需要比較多的系統資...
設計模式1 單例模式
單例模式,利用工廠類只生產乙個例項或者有限個例項,比如乙個系統中只有乙個主機板,乙個顯示卡,但是有些系統中也可以存在多個,雙顯示卡,雙顯示器等等。這些在singleton module中都是可以定義的。當然我們也可以使用全域性的變數或者靜態類或者物件去做,但是單例模式的存在是有其優點的。public...
設計模式1 單例模式
保證乙個類只有乙個例項 即乙個物件,並且提供乙個訪問該例項的全域性訪問點 即類中有乙個公共的方法 方法的返回該類的物件。1.windows的任務管理器 無論開啟多少次都只能開啟乙個視窗 2.windows的 站 3.專案中的配置檔案 4.的計數器 5.日誌 6.連線池 8.spring的bean 預...