国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《HeadFirst設(shè)計模式(第二版)》第五章代碼——單例模式

這篇具有很好參考價值的文章主要介紹了《HeadFirst設(shè)計模式(第二版)》第五章代碼——單例模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

代碼文件目錄:

《HeadFirst設(shè)計模式(第二版)》第五章代碼——單例模式,HeadFirst設(shè)計模式(第二版)源碼,設(shè)計模式,單例模式,java文章來源地址http://www.zghlxwxcb.cn/news/detail-640351.html

?初始版本:
package Chapter5_SingletonPattern.origin;

/**
 * @Author 竹心
 * @Date 2023/8/5
 **/

public class Singleton {
    private static Singleton uniqueInstance;

    private Singleton(){}

    public static Singleton getInstance(){
        if(uniqueInstance == null){
            uniqueInstance = new Singleton();
        }
        return uniqueInstance;
    }

    //問題:多線程中會出現(xiàn)多個實例被創(chuàng)建的情況

    //other functions

}
三種解決多線程問題的方法:
package Chapter5_SingletonPattern.Multithread;

import Chapter5_SingletonPattern.origin.Singleton;

/**
 * @Author 竹心
 * @Date 2023/8/5
 **/

public class Singleton1 {
    private static Singleton1 uniqueInstance;

    private Singleton1(){}

    //使用synchronized迫使每個線程進(jìn)入此方法之前必須輪到他
    //但是這樣會導(dǎo)致性能開銷大

    public static synchronized Singleton1 getInstance(){
        if(uniqueInstance == null){
            uniqueInstance = new Singleton1();
        }
        return uniqueInstance;
    }

    //other functions
}
package Chapter5_SingletonPattern.Multithread;

/**
 * @Author 竹心
 * @Date 2023/8/5
 **/

public class Singleton2 {
    //急切創(chuàng)建實例:在靜態(tài)初始化器中就創(chuàng)建實例
    private static Singleton2 uniqueInstance = new Singleton2();

    private Singleton2(){}

    public static Singleton2 getInstance(){
        return uniqueInstance;
    }

    //other functions
}
package Chapter5_SingletonPattern.Multithread;

import Chapter5_SingletonPattern.origin.Singleton;

/**
 * @Author 竹心
 * @Date 2023/8/5
 **/

public class Singleton3 {

    //用雙重檢查加鎖減少使用同步,降低開銷

    private volatile static Singleton3 uniqueInstance;
    //volatile保證uniqueInstance為單實例類的時候多個線程正確處理

    private Singleton3(){}

    public static Singleton3 getInstance(){
        if(uniqueInstance == null){
            synchronized (Singleton3.class){
                if(uniqueInstance == null){//進(jìn)入同步區(qū)塊后,再檢查一次
                    uniqueInstance = new Singleton3();
                }
            }
        }
        return uniqueInstance;
    }
}
Notes:
單件模式:
    確保一個類只有一個實例,并提供一個全局的訪問點

到了這里,關(guān)于《HeadFirst設(shè)計模式(第二版)》第五章代碼——單例模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 《HeadFirst設(shè)計模式(第二版)》第九章代碼——迭代器模式

    ? ? ? ? 一家早餐店和一家午餐點準(zhǔn)備合并在一起,兩家的點菜的菜單實現(xiàn)方式如下: ? ? ? ? 首先,他們的菜單選項都基于同一個類: 菜單選項類 早餐店初始菜單 午餐店初始菜單: 可以得知:前者使用List來實現(xiàn),后者使用數(shù)組來實現(xiàn)。 這時候,如果不采取任何方法加以

    2024年02月12日
    瀏覽(20)
  • 《HeadFirst設(shè)計模式(第二版)》第十一章代碼——代理模式

    《HeadFirst設(shè)計模式(第二版)》第十一章代碼——代理模式

    代碼文件目錄: ?RMI: MyRemote MyRemoteClient MyRemoteImpl 能夠遠(yuǎn)程監(jiān)控的糖果機(jī): 在上一章的代碼的基礎(chǔ)上做一些修改 GumballMachine GumballMachineRemote GumballMachineTestDrive GumballMonitor GumballMonitorTestDrive 五個狀態(tài)類: 同樣的修改:

    2024年02月12日
    瀏覽(29)
  • 《HeadFirst設(shè)計模式(第二版)》第八章代碼——模板方法模式

    《HeadFirst設(shè)計模式(第二版)》第八章代碼——模板方法模式

    代碼文件目錄: ? CaffeineBeverage Coffee Tea notes

    2024年02月12日
    瀏覽(25)
  • 《python語言程序設(shè)計基礎(chǔ)》(第二版)第五章課后習(xí)題參考答案

    第五章 函數(shù)和代碼的復(fù)用 5.1 改造練習(xí)題3.5,輸出更大的田字格 5.2 實現(xiàn)isOdd函數(shù) 5.3 實現(xiàn)isNum函數(shù) 5.4 實現(xiàn)multi函數(shù) 5.5 實現(xiàn)isPrime函數(shù) 5.6 輸出10種生日日期格式 代碼一: 代碼二: 5.7 漢諾塔 注:上述代碼僅供參考,若有問題可在評論區(qū)留言!

    2024年02月01日
    瀏覽(24)
  • 【設(shè)計模式】第十五章:責(zé)任鏈模式詳解及應(yīng)用案例

    【設(shè)計模式】第十五章:責(zé)任鏈模式詳解及應(yīng)用案例

    【設(shè)計模式】七大設(shè)計原則 【設(shè)計模式】第一章:單例模式 【設(shè)計模式】第二章:工廠模式 【設(shè)計模式】第三章:建造者模式 【設(shè)計模式】第四章:原型模式 【設(shè)計模式】第五章:適配器模式 【設(shè)計模式】第六章:裝飾器模式 【設(shè)計模式】第七章:代理模式 【設(shè)計模式

    2024年02月13日
    瀏覽(21)
  • 《微服務(wù)架構(gòu)設(shè)計模式》第二章

    《微服務(wù)架構(gòu)設(shè)計模式》第二章

    軟件架構(gòu)的定義 看一下大佬是怎么說的: 計算機(jī)系統(tǒng)的軟件架構(gòu)是構(gòu)建這個系統(tǒng)所需要的一組結(jié)構(gòu),包括軟件元素、它們之間的關(guān)系以及兩者的屬性。 --Bass等著《Documenting Software Architectures:Views and Beyond》 這個定義將軟件分解為元素和元素之間的關(guān)系兩個部分,就像一輛汽車

    2024年02月09日
    瀏覽(23)
  • 二十三種設(shè)計模式第二十篇--備忘錄模式

    二十三種設(shè)計模式第二十篇--備忘錄模式

    備忘錄模式,備忘錄模式屬于行為型模式。它允許在不破壞封裝的情況下捕獲和恢復(fù)對象的內(nèi)部狀態(tài)。 保存一個對象的某個狀態(tài),以便在適當(dāng)?shù)臅r候恢復(fù)對象,該模式通過創(chuàng)建一個備忘錄對象來保存原始對象的狀態(tài),并將其存儲在一個負(fù)責(zé)管理備忘錄的負(fù)責(zé)人對象中。 備忘

    2024年02月14日
    瀏覽(23)
  • 二十三種設(shè)計模式第二十四篇--訪問者模式(完結(jié)撒花)

    二十三種設(shè)計模式第二十四篇--訪問者模式(完結(jié)撒花)

    在訪問者模式(Visitor Pattern)中,我們使用了一個訪問者類,它改變了元素類的執(zhí)行算法。 通過這種方式,元素的執(zhí)行算法可以隨著訪問者改變而改變。 這種類型的設(shè)計模式屬于行為型模式。根據(jù)模式,元素對象已接受訪問者對象,這樣訪問者對象就可以處理元素對象上的

    2024年02月14日
    瀏覽(24)
  • 《微服務(wù)架構(gòu)設(shè)計模式》第二章 服務(wù)的拆分策略

    《微服務(wù)架構(gòu)設(shè)計模式》第二章 服務(wù)的拆分策略

    內(nèi)容總結(jié)自《微服務(wù)架構(gòu)設(shè)計模式》 軟件架構(gòu)的定義:計算機(jī)系統(tǒng)的軟件架構(gòu)是構(gòu)建這個系統(tǒng)所需要的一組結(jié)構(gòu),包括軟件元素、他們之間的關(guān)系以及兩者的屬性(Bass等著) 其實質(zhì)是應(yīng)用程續(xù)的架構(gòu)將軟件分解為元素(element)和這些元素之間的關(guān)系(relation)。由于這兩個

    2024年02月09日
    瀏覽(25)
  • (數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

    (數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

    基于直方圖修正的圖像增強(qiáng) :是一種常見的圖像處理方法。該方法通過對圖像的像素值分布進(jìn)行調(diào)整,以改善圖像的對比度和亮度等視覺效果。具體地,直方圖校正方法將圖像的像素值轉(zhuǎn)換為一個新的值域范圍,使得像素值的分布更加均勻,從而增強(qiáng)圖像的細(xì)節(jié)和對比度。這

    2023年04月19日
    瀏覽(117)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包