單例模式的思想很簡單,就是確保類只有一個實例。
使用它的好處:
1、控制資源的使用,通過線程同步來控制資源的併發訪問;
2、控制實例產生的數量,達到節約資源的目的。
3、作爲通信媒介使用,也就是數據共享,它可以在不建立直接關聯的條件下,讓多個不相關的兩個線程或者進程之間實現通信。
緩存、日誌、創建比較耗時的往往可以設計成單例
下面看看它的兩種模式:
懶漢模式 :
public class SingleDemo {
int count = 0;
/**
*懶漢模式
**/
private static SingleDemo singleDemo = null;
private SingleDemo(){
}
public static SingleDemo newInstance(){
if(singleDemo == null){
singleDemo = new SingleDemo();
}
return singleDemo;
}
//解決多線程的問題,加鎖
public static SingleDemo newInstance2(){
if(singleDemo == null){
singleDemo = new SingleDemo();
}
return singleDemo;
}
}
飢漢模式:
int count = 0;
/**
*飢漢模式
**/
//全局變量,只有一個
private static SingleDemo02 singleDemo = new SingleDemo02();
private SingleDemo02(){
}
//多線程的時候不會出問題,不需要加鎖
public static SingleDemo02 newInstance(){
return singleDemo;
}