如何寫出乙個好的單例模式

2021-09-11 23:31:35 字數 1228 閱讀 6337

單例模式是設計模式中總容易理解,並且使用次數比較多的模式,往往在面試中會被問到。在這裡我簡述下自己的思路。希望能對你有所幫助。 ###懶漢式 單例模式

public class single 

public static single getinstance

() return instance;

}}複製**

上面這種,是我們眾所周知的,往往教科書上也是這麼寫的,但是這種是執行緒不安全的,那麼我們來看下乙個。

public static synchronized single getinstance

() return instance;

}複製**

這種相對第一種來說,就安全了很多,但是它並不高效。

雙重檢驗鎖模式(double checked locking pattern),是一種使用同步塊加鎖的方法。被稱其雙重檢驗鎖。是因為會有兩次檢驗instance == null,一次是在同步塊外,一次是在同步塊內。

public static single getinstance

() }

}return instance;

}複製**

這樣是不是很完美了,可是還有問題,我們來看下 jvm 對instance = new single()這句話做了什麼

public class single

() public static single getinstance

() }

}return instance;

}}複製**

public class single

public static single getinstance()}

複製**

public class single   

private single

(){}

public static final single getinstance

()

}複製**

用列舉寫單例實在太簡單了!這也是它最大的優點。下面這段**就是宣告列舉例項的通常做法。

public enum easysingle

複製**

如何寫出乙個效能優化的單例模式

單例模型是面試當中最常見的一種設計模式,它是一種物件建立模式,用於產生乙個物件的具體例項,可以確保系統中乙個類只產生乙個例項。簡而言之,單例模式可以帶來兩個好處 1 對於頻繁使用到的物件,可以節省反覆建立物件花費的時間 2 減少物件的例項化操作,故而可以降低系統記憶體的使用頻率 根據以上兩點,可看出...

教你如何寫出乙個碎片輪播

對於幾乎每乙個入行前端的小夥伴來說,輪播圖幾乎都是必修課,但是,只是單純的切換過渡可能並不能滿足於你追求酷炫的心hh,那麼這裡就教你利用css3的clip path來模擬碎片並為你的輪播圖新增碎片輪播的效果!對於一張來說,如果在原有的基礎上新增一層蒙版,遮蔽住不想讓使用者見到的檢視,剩下的檢視即可作...

如何設計乙個單例模式

單例類最簡單的c 實現 class single single static single getinstance return m pinstance single single m pinstance null 單例要求 參考 劍指offer c 保證執行緒安全 class single ret...