正確的單例寫法

方案一:(無懶加載)

public class SingleInstance{

	private SingleInstance(){}

	private static SingleInstance instance=new SingleInstance();

	public static SingleInstance getInstance(){

		return instance;

	}

}


public class SingleInstance{

private SingleInstance(){}

private static SingleInstance instance=new SingleInstance();

public static SingleInstance getInstance(){

return instance;

}

}




方案二:(靜態內部類)

public class SingleInstance{

	private SIngleInstance(){}

	private static class SingleInner{

	private static SingleInstance instance=new SingleInstance();

	}

	public static SingleInstance getInstance(){

		return SingleInner.instance;

	}

}
方案三(雙重鎖):
public class SingleInstance{
	private static SingleInstance instance;
	private SingleInstance(){}
	public static SingleInstance getInstance(){
		if(instance==null){
			synchronized (SingleInstance.class){
				if(instance==null){
					instance=new SingleInstance();
				}
			}
		}
	}
}





public class SingleInstance{

private SingleInstance(){}

private static SingleInstance instance=new SingleInstance();

public static SingleInstance getInstance(){

return instance;

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章