成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java中單例模式餓漢式與懶漢式的對比

java 中單例模式餓漢式與懶漢式的對比

成都網站建設、成都網站設計,成都做網站公司-創(chuàng)新互聯(lián)已向數千家企業(yè)提供了,網站設計,網站制作,網絡營銷等服務!設計與技術結合,多年網站推廣經驗,合理的價格為您打造企業(yè)品質網站。

概念:

保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。

以前我們的做法是設置一個全局變量,也就是讓它使得一個對象被訪問。但是它不能防止你實例多個對象。這時我們可以讓類自身負責保存它的唯一實例,這個類可以保證沒有其他實例可以被創(chuàng)建,并且提供一個訪問該實例的方法。

通過上面的描述,我們可以看到單例模式有以下特點:

1、單例類只能有一個實例。
  2、單例類必須自己自己創(chuàng)建自己的唯一實例。
  3、單例類必須給所有其他對象提供這一實例。

因此,創(chuàng)建一個類的實例的具體方法(要素)是:

      1、 私有的、靜態(tài)的成員變量
      2、 私有的構造方法
      3、 公共的、靜態(tài)的一個入口方法

根據上面的具體方法,我們來看一下下面的代碼

public class Test { 
  private static Test instance = new Test ();  
   
  private Test (){ 
   
  } 
   
  public static Test GetInstance(){ 
    return instance; 
  } 
} 

從上面的代碼中我們看出,當類加載到內存時,在我們調用GetInstance()方法之前,就已經在內存中創(chuàng)建了一個instance對象。也就是說,不管我是否想用這個方法,在內存中就已經存在instance這個對象了,此時這個對象就是多余對象了,這樣就會占用內存資源。因此我們將這種單例模式稱作“餓漢式”單例模式。其實就是一個“預加載”的過程。

而“懶漢式”單例模式(也就是“延遲式”創(chuàng)建對象)則是在我們需要的時候才去創(chuàng)建這個對象。這樣就避免了提前創(chuàng)建對象占用內存資源。


public class Test { 
  private static Test instance = null; 
   
  private Test (){ 
     
  } 
  public static Test getInstance(){ 
    if (instance == null) then { 
      instance = new Test (); 
    } 
    return instance; 
  } 
} 

但是,通過觀察上面的代碼,我們可以看出其中還是存在一些問題的。假設,有多個進程同時調用getInstance()方法,這樣就可能出現(xiàn)同時創(chuàng)建多個對象,那這就不是單例模式了。因此,我們可以加入“同步”這個關鍵字使得我們的代碼更加的嚴謹。改進之后是這樣的

public class Test { 
  private static Test instance = null; 
   
  private Test (){ 
     
  } 
  public static synchronized Test getInstance(){ 
    if (instance == null) then { 
      instance = new Test (); 
    } 
    return instance; 
  } 
} 

 以上就是java中兩種單例模式的對比,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

網頁名稱:java中單例模式餓漢式與懶漢式的對比
鏈接URL:http://jinyejixie.com/article10/iehjgo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機網站制作、微信公眾號、App設計、關鍵詞優(yōu)化微信小程序

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網站建設
呼和浩特市| 九寨沟县| 万安县| 沭阳县| 车险| 政和县| 英山县| 华阴市| 秦安县| 旅游| 绵竹市| 凤山县| 中江县| 百色市| 天等县| 柘荣县| 嵩明县| 砀山县| 班玛县| 滨州市| 安平县| 云龙县| 额尔古纳市| 黑龙江省| 建水县| 南召县| 哈密市| 高邮市| 溆浦县| 白朗县| 甘谷县| 白朗县| 观塘区| 商洛市| 鄂温| 常熟市| 乐平市| 贵溪市| 武平县| 嫩江县| 成安县|