徹底搞懂單例模式

2021-10-07 14:03:53 字數 1092 閱讀 6264

在程序中,乙個類只允許建立乙個物件

解決資源衝突

資料只需要存在乙份

1.餓漢式

public

class

singleton

public

static singleton getinstance()

}

優點:執行緒安全,獲取例項的速度快

缺點:類載入時例項化物件,可能不被使用,造成記憶體的浪費。

2.懶漢式

public

class

singleton

public

static

synchronized singleton getinstance()

return instance;

}}

優點:使用時才初始化例項,節省資源

缺點:鎖的粒度過大,導致併發度降低;如果初始化內容較多時,載入資料會變慢,影響系統效能。

3.雙重檢查+volatile

public

class

singleton

public

static singleton getinstance()

}}return instance;

}}

優點:1. 執行緒安全。在例項未空時才加鎖,提高了併發度。

​ 2.使用volatile修飾變數,靜止指令重排序,避免npe。

4.靜態內部類

public

class

singleton

private

static

class

singletonholder

pulbic static singleton getinstance()

}

優點:執行緒安全,懶載入

5.列舉

public

enum singleton

}

優點:執行緒安全

缺點:類載入時例項化物件,可能例項不被使用,造成記憶體浪費。

徹底搞懂裝飾器模式

動態的給乙個物件新增一些額外的職責 繼承方案會導致繼承結構複雜,不易維護等問題,因此使用組合代替繼承,給原始類新增增強功能 裝飾器類需要和原始類繼承相同的抽象類或者實現相同的介面 下面以jdk中的io舉例 抽象類輸入流 public abstract class inputstream 實現inpu...

徹底搞懂px em rem

px畫素 pixel 相對長度單位。畫素px是相對於顯示器螢幕解析度而言的。px特點 em是相對長度單位。相對於當前物件內文字的字型尺寸。如當前對行內文字的字型尺寸未被人為設定,則相對於瀏覽器的預設字型尺寸。em特點 注意 任意瀏覽器的預設字型高都是16px。所有未經調整的瀏覽器都符合 1em 16...

徹底搞懂parseInt

parseint 72.45 8 2 8 1 7 8 1 4 8 1 5 8 2 2 1 7 8 4 1 8 5 1 8 8 58.578125 parseint 231 3 3進製只能是0 2,所以查詢到3的時候,發現已經不是3進製的範疇了,則不再繼續查詢 把2當做3進製,最後轉為10進製 2 3...