黑馬程序員——淺談java中的單例模式

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------


 

 

 單例設計模式:解決一個類在內存中只存在一個對象
保證對象唯一的三步驟:
1,爲了避免其他程序過多建立該類對象,先禁止其他程序建立該類對象
2,爲了讓其他程序可以訪問到該類對象,只好在本類中,自定義一個對象
3,爲了方便其他程序對自定義對象的訪問,可以對外提供一些訪問方法
使用:
還想別的類一樣該怎麼描述怎麼描述,該怎麼添加成員怎麼添加成員
但是,當需要將該事物的對象保證在內存唯一時,就將上述三步驟加上。



/*
餓漢式
先初始化對象
Single類一進入內存,就已經創建好了對象
*/
class  Single
{
private Single(){}
private static Single s = new Single(); 
public static Single GetInstance()
{
  return s; 
}
}

/*
懶漢式
又稱延遲加載的單例模式
對象是方法被調用時,才初始化。
single類進內存,對象還沒有存在,只有調用了GetInstance方法時, 才建立對象
*/
class  Single1
{
private Single(){}
private static Single s = null; 
public static Single GetInstance()
{
  if(s==null)
  {
   synchronized(Single.class)//線程同步,防止創建多個對象
   {
    if(s==null)
     s = new Single();
   }
  } 
  return s; 
}
}
/*
建議:開發中使用餓漢式
餓漢式:這個在開發的時候是經常用到的,這樣不會出現線程的安全情況
懶漢式:這個會出現線程不安全,即使你用鎖進行了限制,但是會浪費判斷時間,所以效率低
*/
 
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------



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