設計模式 1 單例模式

2021-08-01 03:52:34 字數 1995 閱讀 8934

籠統的說就是乙個類保證只建立乙個例項,而且自行例項化並向整個系統提供例項。

因為對於一些重量級資源重複建立的話不但占用資源,還浪費空間。比如一些connection、factorybean。而與靜態方法的區別是,我們不但使用靜態方法還要使用非靜態方法,但還要維護乙份例項的時候,就需要單例模式了。

3.1          懶漢

public class 

singleton

private static

singleton

singleton

= null;

public static

singleton

getsingleton

()       

return

singleton

;   

}}

3.2          懶漢(執行緒安全)

4.    

public class

singleton

private static

singleton

singleton

= null;

public static  synchronized

singleton

getsingleton

()       

return

singleton

;   

}}

3.3  餓漢

public class 

singleton

private static

singleton

singleton

= new

singleton()

;    public static  synchronized

singleton

getsingleton

()}

3.4  餓漢變異

public class 

singleton

private static

singleton

singleton

= null;

static

public static  synchronized

singleton

getsingleton

()}

3.5 靜態內部類

public class 

singleton

private static class

singletoholder

public static  synchronized

singleton

getsingleton

()}

3.6 列舉

public enum 

singletonenum

}

3.7  雙重鎖校驗

public class 

singleton

private static

singleton

singleton

= null;

public static

singleton

getsingleton

()            }

}return

singleton

;   

}}

區別:

懶漢不獲取物件不建立例項。 加同步只是為了在多執行緒正常工作,但是效率太低

餓漢 第三和第四沒多少區別,都是作為靜態載入。

列舉推薦使用,而且能防止反序列化建立新物件

靜態內部類,主要是在於只有呼叫getinstance才會去例項化,而如果用靜態內部方法或者靜態屬性時,如果呼叫本類的其他方法,它也會例項化,所以造成不必要的浪費和麻煩。顯然這樣比第一和第二更加合理。

設計模式1 單例模式

文章引用出處 singleton模式是最簡單最常用的設計模式。1,定義 確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個該類。2,單例模式優點 1 單例模式在記憶體中只有乙個例項,減少了記憶體的開支。2 單例模式只生成乙個例項模式,減少了系統效能的開銷。如當乙個物件的產生需要比較多的系統資...

設計模式1 單例模式

單例模式,利用工廠類只生產乙個例項或者有限個例項,比如乙個系統中只有乙個主機板,乙個顯示卡,但是有些系統中也可以存在多個,雙顯示卡,雙顯示器等等。這些在singleton module中都是可以定義的。當然我們也可以使用全域性的變數或者靜態類或者物件去做,但是單例模式的存在是有其優點的。public...

設計模式1 單例模式

保證乙個類只有乙個例項 即乙個物件,並且提供乙個訪問該例項的全域性訪問點 即類中有乙個公共的方法 方法的返回該類的物件。1.windows的任務管理器 無論開啟多少次都只能開啟乙個視窗 2.windows的 站 3.專案中的配置檔案 4.的計數器 5.日誌 6.連線池 8.spring的bean 預...