最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的評論 (共 條)

分享到微博請遵守國家法律
龙江县| 南阳市| 阳东县| 右玉县| 龙里县| 黄浦区| 临桂县| 黄大仙区| 皮山县| 沐川县| 枞阳县| 城步| 阜宁县| 龙门县| 扎囊县| 英超| 阳高县| 海丰县| 鹤峰县| 新营市| 文成县| 基隆市| 长宁区| 巫山县| 大姚县| 昭觉县| 韩城市| 朝阳县| 习水县| 缙云县| 五寨县| 论坛| 兴安盟| 界首市| 德格县| 儋州市| 同德县| 江华| 双城市| 老河口市| 陆河县|