溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java 單例模式(懶漢式與餓漢式)

發(fā)布時(shí)間:2020-10-17 14:20:29 來(lái)源:腳本之家 閱讀:178 作者:沈君 欄目:編程語(yǔ)言

java 單例模式

單例模式是一種常用的軟件設(shè)計(jì)模式。在它的可信結(jié)構(gòu)中只包含一個(gè)被實(shí)例化單例的特殊類。通過(guò)單例設(shè)計(jì)模式可以把整系統(tǒng)中的一個(gè)類只有一個(gè)實(shí)例。

單例設(shè)計(jì)模式又分為兩種方式,懶漢式和餓漢式。

(1)懶漢式,就是只有當(dāng)調(diào)用getInstance的時(shí)候,才會(huì)初始化這個(gè)單例。

(2)餓漢式,就是一旦加載好類,就把單例初始化完成。即是調(diào)用getInstance的時(shí)候,單例是已經(jīng)存在了。

代碼如下:

懶漢式單例

/**
 * Description:
 * 一、設(shè)計(jì)了一個(gè)懶漢式單例
 * 
 * @author lee
 * */
public class SingleMode {

  public static SingleMode s = null;
  /**
   * Description:
   * 私有化構(gòu)造函數(shù)
   * 
   * */
  private SingleMode(){} 

  /**
   * Description:
   * 提供一個(gè)方法來(lái)獲取該單例
   * 
   * @return s 返回一個(gè)單例
   * */
  public static SingleMode getInstance(){

    //保證了線程安全,又減輕了資源加載和性能上的負(fù)擔(dān)
    //即是在創(chuàng)建一次對(duì)象后,不再需要線程鎖了。
    if(s==null){
      synchronized(""){
        if(s==null){
          s = new SingleMode();
        }
      }
    }

    return s;
  }

}



餓漢式單例

/**
 * Description:
 * 二、設(shè)計(jì)了一個(gè)餓漢式單例
 * 
 * @author lee
 * */
class SingleMode1{
  public static final SingleMode1 s = new SingleMode1();

  /**
   * Description:
   * 私有化構(gòu)造函數(shù)
   * 
   * */
  private SingleMode1(){}

  /**
   * Description:
   * 提供一個(gè)方法來(lái)獲取該單例
   * 
   * @return s 返回一個(gè)單例
   * */
  public static SingleMode1 getInstance(){
    return s;
  }

}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI