設計模式1 單例模式

2021-09-05 12:30:58 字數 966 閱讀 8991

確保乙個類只有乙個例項,並且自動例項化並向整個系統提供這個例項

私有化該類的建構函式。

通過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 預...