溫馨提示×

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

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

java 中設(shè)計(jì)模式之單例

發(fā)布時(shí)間:2020-09-20 12:39:46 來源:腳本之家 閱讀:123 作者:lqh 欄目:編程語言

java 中設(shè)計(jì)模式之單例

設(shè)計(jì)模式思想

什么是設(shè)計(jì)模式:我作為初學(xué)者,今天第一次正式學(xué)習(xí)設(shè)計(jì)模式,我覺得對(duì)與理解什么是設(shè)計(jì)模式很重要,那么什么是設(shè)計(jì)模式呢?

設(shè)計(jì)模式:解決問題的一種行之有效的思想。

設(shè)計(jì)模式:用于解決特定環(huán)境下、重復(fù)出現(xiàn)的特定問題的解決方案

我的理解是前人在軟件設(shè)計(jì)的時(shí)候碰到了一類問題,他們總結(jié)出了一套行之有效,并且經(jīng)過驗(yàn)證的解決方案。

設(shè)計(jì)模式的優(yōu)點(diǎn):

1、設(shè)計(jì)模式都是一些相對(duì)優(yōu)秀的解決方案,很多問題都是典型的、有代表性的問題,學(xué)習(xí)設(shè)計(jì)模式,我們就不用自己從頭來解決這些問題,相當(dāng)于在巨人的肩膀上,復(fù)用這些方案即可。

2、設(shè)計(jì)模式已經(jīng)成為專業(yè)人士的常用詞匯,不懂不利于交流。

3、能讓你設(shè)計(jì)的系統(tǒng)更加專業(yè),讓系統(tǒng)有更好的架構(gòu)。

設(shè)計(jì)模式1~~單例

單利設(shè)計(jì)模式是用來解決在內(nèi)存里面只能存在一個(gè)的某個(gè)類 的問題。 這個(gè)比較抽象,打個(gè)比方說 你要做一個(gè)打麻將游戲,丟骰子,第一個(gè)人丟了顯示的幾個(gè)數(shù)字,后面的人也要用。骰子這個(gè)類在內(nèi)存里只允許存在一份。此類問題就需要用單例設(shè)計(jì)方案解決。

第一種: 餓漢式 先自己new 出來。速度快,單是占用內(nèi)存多。

public class Single {
  private final static Single s = new Single();

  //類只能有一個(gè)故私有化構(gòu)造方法,不讓外面new對(duì)象
  private Single(){
  }
//工廠方法的命名規(guī)范
 getinstance
//當(dāng)外面沒辦法new對(duì)象時(shí)候,我們對(duì)像給外面調(diào)要自己來new
// 當(dāng)沒發(fā)new 對(duì)象時(shí)候,必須是靜態(tài)方法,給外界使用。
    public static Single getInstance(){
    return s;
  }
}

第二種: 懶漢式

//懶漢式
public class Single2 {
  // 先步開內(nèi)存,需要用的時(shí)候才new 
  private static Single2 s=null;
  private Single2(){
  }
  // synchronized 用來防多線程時(shí)。第一個(gè)和第二個(gè)線程搶資源都會(huì)進(jìn)入s==null,
時(shí)new 兩次。
  public synchronized static Single2 getInstance(){
    if(s==null){
      s = new Single2();
    }
    return s;
  }
}

synchronized 看成鎖是屬于getInstance方法的。當(dāng)方法屬于static時(shí),鎖屬于類模板的,當(dāng)方法是對(duì)象調(diào)用時(shí)鎖就屬于對(duì)象的。

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

向AI問一下細(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