最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析

 更新時(shí)間:2023年11月29日 09:59:56   作者:時(shí)代&信念  
這篇文章主要介紹了Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析,設(shè)計(jì)模式是在大量的實(shí)踐中總結(jié)和理論化之后優(yōu)選的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問(wèn)題的思考方式,設(shè)計(jì)模式免去我們自己再思考和摸索,需要的朋友可以參考下

什么是設(shè)計(jì)模式?

設(shè)計(jì)模式是在大量的實(shí)踐中總結(jié)和理論化之后優(yōu)選的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問(wèn)題的思考方式。設(shè)計(jì)模式免去我們自己再思考和摸索。

就像是經(jīng)典的棋譜,不同的棋局,我們用不同的棋譜、“套路”。

經(jīng)典的設(shè)計(jì)模式共有23種。每個(gè)設(shè)計(jì)模式均是特定環(huán)境下特定問(wèn)題的處理方法。

在這里插入圖片描述

什么是單例設(shè)計(jì)模式?

就像它的名字一樣,只能存在一個(gè)對(duì)象實(shí)例,所以叫單例模式。

所謂類的單例設(shè)計(jì)模式,就是采取一定的方法保證在整個(gè)的軟件系統(tǒng)中,對(duì)某個(gè)類只能存在一個(gè)對(duì)象實(shí)例,并且該類只提供一個(gè)取得其對(duì)象實(shí)例的方法。

實(shí)現(xiàn)思路

如果我們要讓類在一個(gè)虛擬機(jī)中只能產(chǎn)生一個(gè)對(duì)象,我們首先必須將類的構(gòu)造器的訪問(wèn)權(quán)限設(shè)置為private,這樣,就不能用new操作符在類的外部產(chǎn)生類的對(duì)象了,但在類內(nèi)部仍可以產(chǎn)生該類的對(duì)象。

因?yàn)樵陬惖耐獠块_始還無(wú)法得到類的對(duì)象,只能調(diào)用該類的某個(gè)靜態(tài)方法以返回類內(nèi)部創(chuàng)建的對(duì)象,靜態(tài)方法只能訪問(wèn)類中的靜態(tài)成員變量,所以,指向類內(nèi)部產(chǎn)生的該類對(duì)象的變量也必須定義成靜態(tài)的。

餓漢式

class Singleton {
    // 1.私有化構(gòu)造器
    private Singleton() {
    }

    // 2.內(nèi)部提供一個(gè)當(dāng)前類的實(shí)例
    // 4.此實(shí)例也必須靜態(tài)化
    private static Singleton single = new Singleton();

    // 3.提供公共的靜態(tài)的方法,返回當(dāng)前類的對(duì)象
    public static Singleton getInstance() {
        return single;
    }
}

懶漢式

class Singleton {
    // 1.私有化構(gòu)造器
    private Singleton() {
    }
    // 2.內(nèi)部提供一個(gè)當(dāng)前類的實(shí)例
    // 4.此實(shí)例也必須靜態(tài)化
    private static Singleton single;
    // 3.提供公共的靜態(tài)的方法,返回當(dāng)前類的對(duì)象
    public static Singleton getInstance() {
        if(single == null) {
            single = new Singleton();
        }
        return single;
    }
}

兩種方式的對(duì)比

餓漢式:

特點(diǎn):立即加載,即在使用類的時(shí)候已經(jīng)將對(duì)象創(chuàng)建完畢。

優(yōu)點(diǎn):實(shí)現(xiàn)起來(lái)簡(jiǎn)單;沒有多線程安全問(wèn)題。

缺點(diǎn):當(dāng)類被加載的時(shí)候,會(huì)初始化static的實(shí)例,靜態(tài)變量被創(chuàng)建并分配內(nèi)存空間,從這以后,這個(gè)static的實(shí)例便一直占著這塊內(nèi)存,直到類被卸載時(shí),靜態(tài)變量被摧毀,并釋放所占有的內(nèi)存。因此在某些特定條件下會(huì)耗費(fèi)內(nèi)存。

懶漢式:

特點(diǎn):延遲加載,即在調(diào)用靜態(tài)方法時(shí)實(shí)例才被創(chuàng)建。

優(yōu)點(diǎn):實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單;當(dāng)類被加載的時(shí)候,static的實(shí)例未被創(chuàng)建并分配內(nèi)存空間,當(dāng)靜態(tài)方法第一次被調(diào)用時(shí),初始化實(shí)例變量,并分配內(nèi)存,因此在某些特定條件下會(huì)節(jié)約內(nèi)存。

缺點(diǎn):在多線程環(huán)境中,這種實(shí)現(xiàn)方法是完全錯(cuò)誤的,線程不安全,根本不能保證單例的唯一性。

到此這篇關(guān)于Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析的文章就介紹到這了,更多相關(guān)Java單例設(shè)計(jì)模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • servlet的常見注冊(cè)方式總結(jié)

    servlet的常見注冊(cè)方式總結(jié)

    servlet大家都不陌生,當(dāng)開發(fā)?Web?應(yīng)用程序時(shí),注冊(cè)?Servlet?是一個(gè)常見的任務(wù),本文將介紹一些常見的?Servlet?注冊(cè)方法,希望對(duì)大家有所幫助
    2023-10-10
  • java 中的instanceof用法詳解及instanceof是什么意思(推薦)

    java 中的instanceof用法詳解及instanceof是什么意思(推薦)

    instanceof 是 Java 的保留關(guān)鍵字。它的作用是測(cè)試它左邊的對(duì)象是否是它右邊的類的實(shí)例,返回 boolean 的數(shù)據(jù)類型。接下來(lái)通過(guò)本文給大家介紹java 中的instanceof用法詳解及instanceof是什么意思,需要的朋友參考下吧
    2017-11-11
  • Java將數(shù)字金額轉(zhuǎn)為大寫中文金額

    Java將數(shù)字金額轉(zhuǎn)為大寫中文金額

    這篇文章主要為大家詳細(xì)介紹了Java將數(shù)字金額轉(zhuǎn)為大寫中文金額,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Java設(shè)計(jì)模式之享元模式

    Java設(shè)計(jì)模式之享元模式

    這篇文章介紹了Java設(shè)計(jì)模式之享元模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • Java 動(dòng)態(tài)代理你真的懂了嗎(動(dòng)態(tài)和代理)

    Java 動(dòng)態(tài)代理你真的懂了嗎(動(dòng)態(tài)和代理)

    動(dòng)態(tài)代理分兩部分,動(dòng)態(tài)和代理,今天通過(guò)本文給大家普及代碼模式及動(dòng)態(tài)代理的概念及示例代碼,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Java實(shí)現(xiàn)在不同線程中運(yùn)行的代碼實(shí)例

    Java實(shí)現(xiàn)在不同線程中運(yùn)行的代碼實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)在不同線程中運(yùn)行的代碼,結(jié)合具體實(shí)例形式分析了java多線程操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • java實(shí)現(xiàn)6種字符串?dāng)?shù)組的排序(String array sort)

    java實(shí)現(xiàn)6種字符串?dāng)?shù)組的排序(String array sort)

    這篇文章主要介紹了java實(shí)現(xiàn)6種字符串?dāng)?shù)組的排序(String array sort),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 第三方網(wǎng)站微信登錄java代碼實(shí)現(xiàn)

    第三方網(wǎng)站微信登錄java代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了第三方網(wǎng)站微信登錄的java代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java中的FileWriter用法詳解與實(shí)戰(zhàn)記錄

    Java中的FileWriter用法詳解與實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于Java中FileWriter用法的相關(guān)資料,包括寫入字符數(shù)據(jù)到文件、字符數(shù)組和部分字符寫入、配合BufferedWriter使用等方法,同時(shí)也解釋了其與OutputStreamWriter,BufferedWriter的異同特性,適合簡(jiǎn)單的文件寫入操作,需要的朋友可以參考下
    2024-10-10
  • java1.5中訪問(wèn)環(huán)境變量

    java1.5中訪問(wèn)環(huán)境變量

    這篇文章主要介紹了如何在java1.5中訪問(wèn)環(huán)境變量,使用System.getenv()可以訪問(wèn)環(huán)境變量
    2014-01-01

最新評(píng)論

永靖县| 湘西| 诸城市| 南召县| 寻乌县| 贵德县| 大关县| 南召县| 阿图什市| 酒泉市| 洪泽县| 聂拉木县| 连云港市| 衡山县| 灌南县| 密山市| 旌德县| 泰来县| 嘉鱼县| 昭苏县| 鹿邑县| 万安县| 江孜县| 酒泉市| 陆良县| 西宁市| 莒南县| 鹿邑县| 营口市| 望谟县| 勃利县| 临邑县| 固始县| 固镇县| 阿尔山市| 黄山市| 道孚县| 九龙城区| 丰都县| 常州市| 衡山县|