Java 單例模式的使用

2021-07-10 04:14:22 字數 1677 閱讀 8458

確保某乙個類中只有乙個例項,而且自行例項化並且向整個系統提供乙個例項。

singleton包下的singleton是懶漢式單例,singleton雙檢查單例,singleton2餓漢式單例

確保某個類有且只有乙個例項。避免產生多個物件消耗過多的資源,或者某種型別的物件只應該有且既有乙個。

例如建立乙個物件需要消耗資源過多,如要訪問io和資料庫資源、網路資源,這事就要考慮使用單例

(1)構造方法私有化,一般為private

(2).通過乙個靜態方法返回單例物件。

(3)確保單例類物件只有乙個,尤其是在多執行緒的情況下。

(4)確保單例類物件在反序列化時,不重新構建物件。

4.1懶漢式單例

package singleton;

/** * 懶漢式單列模式

* @author administrator

* @優點:單例只有在使用的時候才會初始化化,在一定程度上節約了資源。

* @缺點:第一次載入時需要及時的進行初始化,反應稍微慢,最大的問題是每次呼叫getinstance

* 都是同步,造成了不必要的開銷,一般不建議使用。

*/public class singleton

//同步方法

public static synchronized singleton getinstance()

return instance;

}public static void main(string args)

}

4.2雙檢查單例(dcl)模式

package singleton;

/** *

* @author lidong

* @優點:既能夠在需要的時候初始化單例,又能夠保證執行緒安全。 並且單例物件初始化後呼叫getinstance不進行同步鎖。

* @延遲載入方式

*/public class singleton1

public static singleton1 getinstance()

}} return instance;

}}

3.餓漢式單例

package singleton;

/** * 餓漢式單例

* @author lidong

* @預先載入方式

*/public class singleton2

public static singleton2 getinstance()

}

測試類

package singleton;

public class test

}

結果:

true

true

true

singleton.singleton2@12b6651

singleton.singleton2@12b6651

singleton.singleton@4a5ab2

singleton.singleton@4a5ab2

singleton.singleton1@1888759

singleton.singleton1@1888759

java單例模式

第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...

Java 單例模式

單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...

Java單例模式

單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...