【小白的java成長系列】——構造方法私人化(單例設計)

來源:互聯網
上載者:User

標籤:私人化   java   記憶體   spring   singleton   

有瞭解過spring架構的童鞋們就知道,spring的bean預設是什麼形式呀?———單例形式的。

問:那什麼叫做單例?單例其實就是Singleton,顧名思義就是只有單個的執行個體對象操作。

那為什麼要使用單例呢?

至於這個問題,後面再做解釋,我們先看代碼:

package me.javen.oop;public class SingletonDemo {public static void main(String[] args) {Singleton singleton1 = Singleton.getInstance();Singleton singleton2 = Singleton.getInstance();System.out.println(singleton1 == singleton2);}}class Singleton{private static Singleton singleton;public static Singleton getInstance(){//提供唯一的對象擷取口if(singleton == null){singleton = new Singleton();}return singleton;}private Singleton(){//私人化構造方法System.out.println("只建立一次~");}}

我想問一下同志們,這個的輸出是什嗎?

運行輸出結果:

只建立一次~

true

我們可以看到singleton1和singleton2是相等的,意味著這兩個對象是同一個對象。

首先來看一下私人化構造方法:

意味著外部使用Singleton這個類的時候,不能通過new關鍵字建立對象了。。以下會報錯。。



都不能new了,那我們怎麼使用Singleton類呢?

通過以下方式公開:

public static Singleton getInstance(){//提供唯一的對象擷取口if(singleton == null){singleton = new Singleton();}return singleton;}
能不能不提供這樣的一個方法?

當然能嘍,只是不提供這樣的一種方式,你這個類就真的無法使了~


現在來回答開篇的那個問題,為什麼要使用單例?

1、減少不必要的記憶體開銷,你想啊,要是建立10個對象,就得開銷10分記憶體吧,而單例就1個對象,當然就開銷1份記憶體嘍。。

如果能減少記憶體開銷,那我們在設計類的時候,可不可以都設計成單例的?這樣不是很節省記憶體。。這個問題,先不解釋哈~留給學習的好童鞋思考

2、簡化對象建立過程的複雜性。。這個怎麼說呢,要看對象建立的複雜性了~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.