真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java的單例模式介紹-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)java的單例模式,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)公司成立于2013年,先為嘉魚等服務(wù)建站,嘉魚等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為嘉魚企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

什么是單例模式?

單例模式(Singleton Pattern)是 Java 中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。

這種模式涉及到一個(gè)單一的類,該類負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建。這個(gè)類提供了一種訪問(wèn)其唯一的對(duì)象的方式,可以直接訪問(wèn),不需要實(shí)例化該類的對(duì)象。

單例模式的優(yōu)點(diǎn):

(1)首先肯定是節(jié)省內(nèi)存資源,不管多頻繁的通過(guò)暴露的方法創(chuàng)建實(shí)例,都能保證創(chuàng)建的對(duì)象在系統(tǒng)內(nèi)存中是同一實(shí)例對(duì)象;

(2)靈活性,由于所有實(shí)例的創(chuàng)建都由該類控制,所有該類可以靈活的更改實(shí)例化過(guò)程;

(3)實(shí)例的受控訪問(wèn),單例類可以輕松的控制唯一實(shí)例的受控訪問(wèn);

單例模式的缺點(diǎn):

(1)單例模式?jīng)]有接口,不容易擴(kuò)展;

(2)使用時(shí)不能用反射模式創(chuàng)建單例,否則會(huì)實(shí)例化一個(gè)新的對(duì)象;

(3)使用懶單例模式時(shí)注意線程安全問(wèn)題;

注意:

  • 1、單例類只能有一個(gè)實(shí)例。
  • 2、單例類必須自己創(chuàng)建自己的唯一實(shí)例。
  • 3、單例類必須給所有其他對(duì)象提供這一實(shí)例。

實(shí)現(xiàn)單例模式的方式:

餓單例方式

package index;
public class Superman {
    //空的構(gòu)造器
    private Superman(){}
    
    //實(shí)例化對(duì)象
    private static Superman supermanInstance = new Superman();
    
    //獲取實(shí)例化對(duì)象的靜態(tài)函數(shù)getSupermanInstance()
    public static Superman getSupermanInstance(){
        return supermanInstance;
    }
}

餓單例在類加載的時(shí)候就被提前new了出來(lái),一開(kāi)始就實(shí)例化了一個(gè)supermanInstance對(duì)象,不管你程序需要不要調(diào)用這個(gè)對(duì)象,它都已經(jīng)準(zhǔn)備好了;沒(méi)有進(jìn)行延遲加載,為了減小程序負(fù)載大多數(shù)情況下需要懶加載,所以這種實(shí)現(xiàn)單例的方式不是最佳選擇。

懶單例方式(單線程寫法)

package index;
public class Superman {
    //空的構(gòu)造器
    private Superman(){}

    //實(shí)例化對(duì)象;只聲明 不使用new進(jìn)行實(shí)例化
    private static Superman supermanInstance = null;

    //獲取實(shí)例化對(duì)象的靜態(tài)函數(shù)getSupermanInstance()
    public static Superman getSupermanInstance(){
        if(supermanInstance==null){ //如果為null的情況再進(jìn)行實(shí)例化
            supermanInstance = new Superman();
        }
        return  supermanInstance;
    }
}

聲明一個(gè)對(duì)象不去實(shí)例化它,當(dāng)程序需要實(shí)例化的時(shí)候調(diào)用靜態(tài)工廠方法 getSupermanInstance(),方法中對(duì)聲明的對(duì)象進(jìn)行判斷,如果是null的話再去實(shí)例化它,這種寫法可以達(dá)到延遲加載的效果,但它是非線程安全的,若在多線程中有兩個(gè)線程同時(shí)調(diào)用靜態(tài)工廠方法getSupermanInstance() 就有可能重復(fù)的創(chuàng)建該類的實(shí)例破壞了單例的唯一性;

關(guān)于java的單例模式介紹就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


新聞標(biāo)題:java的單例模式介紹-創(chuàng)新互聯(lián)
分享URL:http://weahome.cn/article/hihgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部