日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

完美单身

發(fā)布時(shí)間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 完美单身 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我不時(shí)遇到一些Java程序員,他們不確定他們應(yīng)該如何正確實(shí)現(xiàn)Singleton模式。 (如果您不知道什么是Singleton,請(qǐng)嘗試Wikipedia: Singleton模式 )。

我并不是在談?wù)撛诰€程環(huán)境中的正確實(shí)現(xiàn)。 但是,使用最常見的實(shí)現(xiàn),您可以在Internet上找到所需的內(nèi)容,從而可以輕松創(chuàng)建任意多個(gè)單例。

試想一下,您有以下常見的單例實(shí)現(xiàn):

public final class NonSafeSingleton implements Serializable {private static final NonSafeSingleton INSTANCE = new NonSafeSingleton();private NonSafeSingleton() {}public static NonSafeSingleton getInstance() {return INSTANCE;} }

現(xiàn)在專注于可序列化單詞。 再想一秒鐘…是的,您是對(duì)的。 如果您通過RMI發(fā)送這些東西,您將獲得第二實(shí)例。 甚至需要執(zhí)行一些內(nèi)存序列化,反序列化和kaboom操作! 您剛剛?cè)∠艘话愕腟ingleton合同。 那不太好。 但是如何解決呢? 通常,我使用兩種方法:

  • 困難的方式(或者您使用1.4或更舊的Java)
    您需要在Singleton類中實(shí)現(xiàn)readResolve方法。 這個(gè)小東西用來覆蓋已創(chuàng)建的序列化機(jī)制。 您返回的內(nèi)容將用于代替序列化產(chǎn)生的數(shù)據(jù)(有關(guān)詳細(xì)信息,請(qǐng)參見: Serializable Javadoc )。 只需在此處返回您的實(shí)例: ...protected Object readResolve() throws ObjectStreamException {return INSTANCE;} ...
  • 簡(jiǎn)單方法(是的,我使用的是1.5或更高版本)
    將您的單例類更改為枚舉,并刪除私有構(gòu)造函數(shù)和getInstance方法。 是的,就是這么簡(jiǎn)單。 然后,您可以免費(fèi)獲得它。 public enum SafeSingleton implements Serializable {INSTANCE; }
  • 在實(shí)施下一個(gè)Singleton時(shí),請(qǐng)記住這一點(diǎn)。 如果大量使用RMI,可以使您的生活更輕松。

    參考:來自我們的JCG合作伙伴 Marek Piechut的《完美單身漢》,在《 發(fā)展世界》中 。

    相關(guān)文章 :
    • Java中可怕的雙重檢查鎖定成語
    • Java Secret:使用枚舉構(gòu)建狀態(tài)機(jī)
    • 依賴注入–手動(dòng)方式
    • Java泛型快速教程
    • JVM如何處理鎖

    翻譯自: https://www.javacodegeeks.com/2011/08/perfect-singleton.html

    總結(jié)

    以上是生活随笔為你收集整理的完美单身的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。