小華的故事--單例模式

昨日,從新溫習了一下工廠模式和單例模式。設計模式

而且從新認識了設計模式,在學校期間接觸過設計模式。學習

可是,在那個時期,學設計模式只是單純的學習理論知識而已。spa

ps:順便吐槽一下,上學期間學習的東西,大多數的狀況會在將來的某個時間點徹底遺忘掉。設計

最根本的緣由在於,那個時期說學習的東西更偏重與理論,理論這種東西,只是潛移默化的告訴你「我知道這個」。code

可是,當你真正開始用這個東西的時候發現無從下手。這也就形成了大學生找工做眼高手低的現象。對象

(以上純屬我的觀點)blog

-------------------------------------------------回到正題-------------------------------------------------------------get

先講一下單例模式的我的理解:同步

單例模式,顧名思義,就是在一個運行機制(應用程序)中,一個class類只有一個實例的存在。class

下面以小華的故事做爲主線,講一下單利模式的三種實現,若是理解有誤,歡迎指出。

 

在小華初中的時候電腦尚未那麼普及,小華很是想玩電腦(去QQ農場偷個菜什麼的(●'◡'●)),

剛好,鄰居大土豪給兒子買了一臺,因而乎小華就去了~~~可是,小華髮現有好多人都和小華同樣在等着玩電腦。

小土豪說:大家先等我玩完了!在去決定誰來玩。

基於這種思考,就開始實現講關於小華的故事--單例模式:

小華的故事一、

開始時,小華的鄰居大土豪買了一臺電腦:

private static Singleton instance = new Singleton(); 

小土豪說這是個人電腦:

private Singleton(){   
       
  }  

小土豪玩累了,讓給下一我的來玩:

private static Singleton getInstance(){   
        return instance;   
    }  

那個時候電腦就是精神的糧食,而你們很是須要這種糧食,能夠說是很是餓。

因此,上面說實現的這種單例模式成爲「餓漢模式」。

小華的故事二、

後來,小華認識了一個豪友,豪友也有電腦:

private Singleton(){   
       
}  

豪友早就玩膩了電腦,電腦就放在那裏也不開機,

private static Singleton instance;     

可是,對於小華來講怎麼能讓電腦就這麼放着浪費呢?!

豪~電腦可玩乎~~~,豪友很大方---隨便玩!

public static Singleton getInstance(){      
        if(instance == null){      
            return instance = new Singleton();      
        }else{      
            return instance;      
        }      
    }    

有個豪友是多麼重要啊!

不用像餓漢同樣,每天等着小土豪玩完再玩。能夠很慵懶的想玩就玩。因此,這種慵懶的生活就叫作「懶漢模式」。

小華的故事三、

好景不長,豪友的表弟暑假要在豪友家住,擺明了就是爲了玩電腦去的。

電腦仍是豪友的電腦:

private Singleton(){   
       
 }  

豪友通常仍是不怎麼玩,電腦一如既往的閒着:

private static Singleton instance;     

可是,小華卻有了顧及。先要看電腦有沒有人再用。

難免會發生這樣一種狀況,小華打開電腦的同時,豪友的表弟也進來要玩電腦。

豪友也是夠仗義,告訴表弟電腦鎖上了密碼忘了,你先出去玩去吧!等電腦好了再叫你。

 public static Singleton getSingle(){    //外部經過此方法能夠獲取對象     
    if(single == null){      
        synchronized (Singleton.class) {   //保證了同一時間只能只能有一個對象訪問此同步塊         
            if(single == null){       
                single = new Singleton();           
        }      
      }   
    }     
    return single;   //返回建立好的對象    
  }   

這樣,豪友騙表弟電腦鎖住了,就是所謂的「雙重鎖模式」。

這就是小華的故事--單例模式。

相關文章
相關標籤/搜索