java設計模式:單例模式

來源:互聯網
上載者:User

標籤:建立   一個   ==   代碼   實現   tin   多線程   public   java設計   

所謂設計模式,就是一套反覆會他人使用,大多數人熟知的一種設計模式。

 

優點:

讓代碼更容易被他人理解,保證的代碼的重用性和可靠性。

 

單例模式分為兩種,一種是餓漢模式,另外一種是懶漢模式。

單例模式適用於那些有且有一個對象的項目,比如說日誌,設定檔等。

 

餓漢模式:

  餓漢模式我們可以通過私人的構造方法去實現,這樣可以防止外界通過構造方法去建立多個執行個體,我們可以在類中建立構造方法的唯一執行個體,下面看具體例子:

public class guohe {    //建立一個靜態構造方法,防止外部直接調用    private guohe(){    }    //建立本類的唯一執行個體    private static guohe Instace = new guohe();    //提供給外部調用的唯一執行個體    public static guohe getInstace(){        return Instace;    }}

測試類別:

public class use {    public static void main(String[] args) {        guohe guohe01 = guohe.getInstace();        guohe guohe02 = guohe.getInstace();        if (guohe01 == guohe02){            System.out.println("他們兩個是同一個執行個體");        }else {            System.out.println("他們兩個不是同一個執行個體");        }    }}

列印結果:

他們兩個是同一個執行個體

那麼餓漢模式到底體現在哪裡呢?上面提供的執行個體是用static修飾的,也就是說,在類被載入的時候,他就會被自動載入,就像一個餓漢,像儘快吃飽。

--------

懶漢模式:

直接上代碼,下面再解釋:

public class guohe {    //建立一個靜態構造方法,防止外部直接調用    private guohe(){    }    //聲明執行個體,但是並不去建立    private static guohe Instace;    //提供給外部調用的唯一執行個體    public static guohe getInstace(){        if (Instace == null){            Instace = new guohe();        }        return Instace;    }}

調用的main方法和上面的保持不變,就不貼了。

我們可以看到,在懶漢模式中我們只是去聲明類的執行個體,但是並沒有去執行個體化,也就是說,當類被載入的時候,並沒有去建立唯一的執行個體,而是當使用者去擷取的時候,他才會去做判斷,如果執行個體為空白的話,才會去擷取。

我們可以看到,當使用者使用懶漢模式的話,那麼在以後的第二個或者第N個用去再去操作,就不需要再次擷取了,因為在做判斷的時候,執行個體化已經存在,這種設計模式我們稱為懶漢模式。

餓漢模式PK懶漢模式:

1、載入餓漢模式比較慢,因為在載入的時候,他就自動去建立類的執行個體了,但是在運行時擷取對象的速度比較快,因為在訪問類的時候,static修飾的就自動執行了。

2、載入懶漢模式比較快,因為在載入類的時候並沒有自動去建立,所以在啟動並執行時候是比較慢的,因為在載入類的時候並沒有自動去執行個體化,聽著比較繞,但是確實是這樣的道理。

--------總結:

餓漢模式是安全執行緒的,也就是支援對線程,而懶漢模式是線程不安全的,不支援多線程。餓漢模式是用空間換時間,懶漢模式是用時間換空間。

 

java設計模式:單例模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.