国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

設(shè)計模式--單例模式1

2023-03-23 00:36 作者:小劉Java之路  | 我要投稿

介紹

單例模式的含義:單例模式,是一種常用的軟件設(shè)計模式。通過單例模式可以保證系統(tǒng)中, 應(yīng)用該模式的這個類永遠(yuǎn)只有一個實例。即一個類永遠(yuǎn)只有一個對象實例。單例是為了節(jié)約內(nèi)存,單例在有些業(yè)務(wù)場景下還必須用到??!

單例模式有八種方式:

  1. 餓漢式(靜態(tài)常量);

  2. 餓漢式(靜態(tài)代碼塊);

  3. 懶漢式(線程不安全);

  4. 懶漢式(線程安全,同步方法);

  5. 懶漢式(線程安全,同步代碼塊);

  6. 雙重檢查;

  7. 靜態(tài)內(nèi)部類;

  8. 枚舉

我在這里介紹常用的,有興趣的小伙伴可以一起探討

1.餓漢單例設(shè)計模式

懶加載(lazy loading):使?的時候再創(chuàng)建對象


2.懶漢單例設(shè)計模式

這種?式在單線程下使?沒有問題,對于多線程是?法保證單例的,這?列出來是為了和后?使?鎖保證線程安全的單例做對?。

懶漢式,線程不安全

優(yōu)點:懶加載

缺點:線程不安全


多線程破壞單例


效果:

image.png

3.雙檢鎖/雙重校驗鎖(DCL,即 double-checked locking)

描述:這種方式采用雙鎖機制,安全且在多線程情況下能保持高性能。getInstance() 的性能對應(yīng)用程序很關(guān)鍵。


4.登記式/靜態(tài)內(nèi)部類

描述:這種方式能達(dá)到雙檢鎖方式一樣的功效,但實現(xiàn)更簡單。對靜態(tài)域使用延遲初始化,應(yīng)使用這種方式而不是雙檢鎖方式。這種方式只適用于靜態(tài)域的情況,雙檢鎖方式可在實例域需要延遲初始化時使用。


5.枚舉

描述:這種實現(xiàn)方式還沒有被廣泛采用,但這是實現(xiàn)單例模式的最佳方法。它更簡潔,自動支持序列化機制,絕對防止多次實例化。這種方式是 Effective Java 作者 Josh Bloch 提倡的方式,它不僅能避免多線程同步問題,而且還自動支持序列化機制,防止反序列化重新創(chuàng)建新的對象,絕對防止多次實例化。不過,由于 JDK1.5 之后才加入 enum 特性,用這種方式寫不免讓人感覺生疏,在實際工作中,也很少用。不能通過 reflection attack 來調(diào)用私有構(gòu)造方法。


設(shè)計模式--單例模式1的評論 (共 條)

分享到微博請遵守國家法律
封开县| 基隆市| 正镶白旗| 兴城市| 临江市| 图木舒克市| 新沂市| 本溪市| 乐东| 荣昌县| 衡南县| 微山县| 临安市| 辽宁省| 大埔区| 北海市| 芜湖县| 滦南县| 正安县| 松溪县| 莎车县| 益阳市| 读书| 都匀市| 杭州市| 连城县| 台北市| 牙克石市| 壤塘县| 宁强县| 铜陵市| 武夷山市| 宜兰市| 郎溪县| 理塘县| 安泽县| 麻城市| 汉源县| 峨山| 奉贤区| 天门市|