java Singleton單例模式

2021-06-28 11:12:52 字數 1256 閱讀 8163

單例模式優點:

1,例項控制:單例模式防止其它物件對自己的例項化,確保所有的物件都訪問乙個例項。

2,伸縮性:因為由類自己來控制例項化程序,類就在改變例項化程序上有相應的伸縮性。

單例模式的缺點:

1,系統開銷。雖然這個系統開銷看起來很小,但是每次引用這個類例項的時候都要進行例項是否存在的檢查。這個問題可以通過靜態例項來解決。

2,開發混淆。當使用乙個單例模式的物件的時候(特別是定義在類庫中的),開發人員必須要記住不能使用new關鍵字來例項化物件。因為開發者看不到在類庫中的源**,所以當他們發現不能例項化乙個類的時候會很驚訝。

3,物件生命週期。單例模式沒有提出物件的銷毀。在提供記憶體管理的開發語言(比如,基於.netframework的語言)中,只有單例模式物件自己才能將物件例項銷毀,因為只有它擁有對例項的引用。在各種開發語言中,比如c++,其它類可以銷毀物件例項,但是這麼做將導致單例類內部的指標指向不明

舉例說明:

package com.it.singleton;

/** * 單例模式又稱單態模式

* @author gaoxu

*2015-1-28

*/public class singletontest

//單例模式又分為懶漢模式和餓漢模式

//1.懶漢模式

private static singletontest singletona = null;

public static synchronized singletontest getinstancesa()

return singletona;

} /**

* 在上面**中,使用了判斷語句。

* 如果instance為空,再進行例項化,這成為lazy initialization。

* 注意getinstance()方法的synchronized,這個synchronized很重要。

* 如果沒有synchronized,那麼使用getinstance()在第一次被訪問時有可能得到多個singleton例項。

*///2.餓漢模式

private static final singletontest singletonb = new singletontest();

public static singletontest getinstancesb()

/*** 上面**先產生乙個final的物件,之後的都是一樣的

* 所以也是產生了單一的物件

*/}

設計模式(Java) Singleton模式

single模式必須滿足的條件 1.確保任何情況下都絕對只有1個例項 2.在程式上表現出 只存在乙個例項 示例程式 singleton類 package singleton 單例模式 public class singleton 提供給外界用來獲取例項的介面方法,static確保只能獲取到乙個且唯一...

單例 單例模式

簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...

單例(懶漢式單例 餓漢式單例)

public class singleton private static singleton instance new singleton public static singleton getinstance public class singleton public static synchr...