單例模式的講解(singleton)



   最近學習C#,遇到需要單例模式的地方,想起當年學習java的時候,這是最簡單的一個設計模式了,於是乎回過頭來看了一下java的代碼,很快就明白了
   單例模式是每次調用一個類的對象時, 都是調用類的同一個實例,而不是調用一次就進行一次實例化,上代碼
package singleton;
public class SingleTon
{
private  SingleTon()
{

}
private static SingleTon singleTon = new SingleTon();
public static SingleTon GetInstance()
{
return singleTon;
}
}


package singleton;
public class SingleTonTest
{
public static void main(String[] args)
{
SingleTon singleTon1 = SingleTon.GetInstance();
SingleTon singleTon2 = SingleTon.GetInstance();
System.out.println(singleTon1 == singleTon2);
}
}

其中稍微注意的幾點,靜態的方法中只能調用靜態的屬性;
public static SingleTon GetInstance()
{
return singleTon;
}
有時單例模式會在這個方法裏有所調整
public static SingleTon GetInstance()
{
if(singleTon == null)
}
singleTon = new SingleTon();
{
return singleTon;
}
但是當此種方法運用在存在多線程的操作中時,有時會出現多個實例化現象,從而打破單例模式。這是由於線程的共享引起的,當時可以用上鎖的方法來避免,但顯然不如直接用第一種方法實現單例模式來的方便。


 後記:重溫了一下張龍老師的講解感覺還挺親切,雖然已經決定了走C#的道路,依舊支持java!!!





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