馬士兵設計模式筆記1之單例的幾種實現方式
//第一種 classic
public class Singleton{
private static Singleton uniqueInstance;
//other useful instance variables here
private Singleton(){}
public static Singleton getInstance(){
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
return uniqueInstance;
}
}
//第二種 synchronize
public class Singleton{
private static Singleton uniqueInstance;
//other useful instance variables here
private Singleton(){}
public static synchronized Singleton getInstance(){
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
return uniqueInstance;
}
}
//第三種 eagerly create
public class Singleton{
private static Singleton uniqueInstance=new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return uniqueInstance;
}
}
//第四種 雙檢鎖
public class Singleton{
private volatile static Singleton uniqueInstance;
private int field1,field2;
private Singleton(){
//initialization
}
public static Singleton getInstance(){
if(uniqueInstance==null){
synchronized (Singleton.class){
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
}
}
return uniqueInstance;
}
}
//第五種 lazy initiaization holder class
public class SingletonFactory{
private static class SingletonHolder{
public static Singleton instance=new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.instance;
}
}
//第六種 Enum Singleton
public enum Elvis{
INSTANCE;
public void leveTheBuiling(){
//.............
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.