1.簡單解釋:在創建對象時,無論創建多少次,在堆空間上只會申請一次內存空間。
2.例子(1):
public class Singleton{
private static Singleton _singleton = null;
//鎖
private static Object singleton_lock = new Object();
//構造函數私有化
private Singleton(){
//初始化代碼
}
public static Singleton CreateInstance(){
if(_singleton == null) //先看看是否初始化過,避免每次進入都要判斷鎖
{
lock(_singleton_lock){ //防止多個線程進入
if(_singleton == null){ //判斷單例對象是否為null
_singleton = new Singleton();
}
}
}
return _singleton;
}
}
例子(2):
public class Singleton{
private static Singleton _singleton = null;
//構造函數私有化
private Singleton(){
//初始化代碼
}
//靜態構造函數
static Singleton(){
_singleton = new Singleton();
}
public static Singleton CreateInstance(){
return _singleton;
}
}
例子(3):
public class Singleton{
private static Singleton _singleton = new Singleton();
//構造函數私有化
private Singleton(){
//初始化代碼
}
public static Singleton CreateInstance(){
return _singleton;
}
}