Java設計模式之單例設計模式

來源:互聯網
上載者:User

標籤:

設計模式:

解決某一類問題最行之有效方法,Java中23種設計模式。

單例設計模式(Singleton):解決一個類在記憶體中只存在一個對象

比如對於多個程式使用同一個配置資訊對象時,就需要保證該對象的唯一性。

想要保證對象唯一:

為了避免其他程式過多建立該類對象,先禁止其他程式建立該類對象;

還為了讓其他程式可以訪問到該類對象,只好在本類中自訂一個對象;

為了方便其他程式對自訂對象的訪問, 可以對外提供一些訪問方式;

單例設計模式之餓漢式

Single類一進記憶體,就已經建立好了對象,簡單的說就是一上來就吃。

思路:

將建構函式私人化;

在類中建立一個本類對象;

提供一個公用的存取方法,可以擷取到該類對象;

步驟:

//將建構函式私人化


private Single(){}

//在類中建立一個本類對象(final關鍵字等下有學到,是最終的意思,呵呵)


private finla static Single single =new Single();

//提供一個公用的存取方法,可以擷取到該類對象


public static Single getInstance(){

return single;

}

 

 


單例設計模式之懶漢式

對象是方法被調用時才初始化,也叫對象的延時載入


Single類進記憶體,對象還沒有存在,只有調用了getInstance方法時,才建立對象。

步驟:


private Single(){}


private static Single single =null;


public static Single getInstance(){


if(single==null){


synchronized(Single.class){


if(single==null)


single =new Single();

}

}


return single;

}

為什麼有餓漢式還會有懶漢式?

原因就是對了面試,因為面試都是考懶漢式,因為要考慮到了多安全執行緒問題,使程式更加嚴謹。

實際開發中用餓漢式,因為在考慮多線程時會比較安全,懶漢式的解決安全問題的方法,雙重判斷,加入鎖。
總結:

餓漢式:一上來就對對象初始化。

浪費一點點記憶體,因為不調用也執行嘛。
懶漢式:對象調用方法時,才初始化,也叫做對象的延時載入。

一點點記憶體都省,因為只有調用才占記憶體嘛。

 

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.