一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

主題:DesignPattern學(xué)習(xí)-----Singleton

 wantin6 2011-04-05
學(xué)習(xí)了Java兩個(gè)月。。之后兩個(gè)月學(xué)習(xí)jsp,servlet,sql,html一堆雜七雜八的東西。又花一個(gè)多月復(fù)習(xí)了一下。。。
    之后一個(gè)偶然的機(jī)會(huì),跑J道里逛了逛。。banq老大強(qiáng)調(diào)oo思想,設(shè)計(jì)模式。。于是開(kāi)始學(xué)習(xí)設(shè)計(jì)模式 :D
    剛開(kāi)始學(xué)。。好多東西都不是那么明白。。。有理解錯(cuò)誤的地方還請(qǐng)多多指教。。。

    我從Singleton開(kāi)始學(xué)。。我是這么理解的。。

    Singleton顧名思義就是只能創(chuàng)建一個(gè)實(shí)例對(duì)象。。所以不能擁有public的構(gòu)造方法。。

java 代碼

  1. public class Singleton{   
  2.        private Singleton(){}   
  3. }  

既然構(gòu)造方法是私有的,那么從外面不可能創(chuàng)建Singleton實(shí)例了。。只能從內(nèi)部創(chuàng)建。。所以需要一個(gè)方法來(lái)創(chuàng)建此實(shí)例。。此方法肯定必須是static的。。

 

java 代碼
  1. public class Singleton{      
  2.        private Singleton(){}      
  3.        
  4.        public static Singleton getInstance(){   
  5.             return [Singleton Instance];   
  6.       }   
  7. }   

getInstance方法要返回一個(gè)Singleton實(shí)例。。就要一個(gè)Singleton類型的變量來(lái)存儲(chǔ)。。聲明一個(gè)Singleton類型的屬性。。同樣需要是static 的。。靜態(tài)方法只能訪問(wèn)靜態(tài)屬性。。。

java 代碼
  1. public class Singleton{      
  2.        private Singleton(){}      
  3.        
  4.        public static Singleton getInstance(){   
  5.             single=new Singleton();   
  6.             return single;   
  7.       }   
  8.       private static Singleton single;   
  9. }   

如此就能獲得Singleton的實(shí)例了。。但是并不能確保只生成一個(gè)實(shí)例。。。需做判斷。。。

java 代碼
  1. public class Singleton{      
  2.        private Singleton(){}      
  3.        
  4.        public static Singleton getInstance(){   
  5.            if(single==null){   
  6.                 single=new Singleton();   
  7.            }   
  8.            return single;   
  9.        }   
  10.       private static Singleton single;   
  11. }   

這樣就可以了。。。

接著就牽扯到了線程問(wèn)題。。。假設(shè)有兩個(gè)線程。。thread1,thread2。。thread1運(yùn)行到第5行,然后跳到了thread2。。也運(yùn)行到第5行之后。。。此時(shí)兩線程都得到single為空。。。那么就會(huì)有兩個(gè)實(shí)例了。。。解決辦法。。同步。。

java 代碼
  1. public class Singleton{         
  2.        private Singleton(){}         
  3.           
  4.        public synchronized static Singleton getInstance(){      
  5.            if(single==null){      
  6.                 single=new Singleton();      
  7.            }      
  8.            return single;      
  9.        }      
  10.       private static Singleton single;      
  11. }      

 

還有一種方法,提前實(shí)例化。。。

java 代碼
  1. public class Singleton{         
  2.        private Singleton(){}         
  3.           
  4.        public static Singleton getInstance(){      
  5.                   return single;      
  6.        }      
  7.       private static Singleton single=new Singleton();      
  8. }      

 

此時(shí)single的static修飾符有起到另一個(gè)作用。。。因?yàn)閟tatic類型的屬性,只在類加載時(shí)初始化一次。。。以后不會(huì)再初始化了。。確保了只有一個(gè)實(shí)例。。。

最后一種方法是再head first design pattern上看到的。。double-checked locking。。。

java 代碼
  1. public class Singleton{         
  2.        private Singleton(){}         
  3.           
  4.        public static Singleton getInstance(){      
  5.            if(single==null){      
  6.                synchronized(Singleton.class){   
  7.                   if(single==null){      
  8.                      single=new Singleton();      
  9.                   }   
  10.                }   
  11.            }      
  12.            return single;      
  13.        }      
  14.       private volatile static Singleton single;      
  15. }      

 

目前對(duì)Singleton的理解就這么多。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    色哟哟国产精品免费视频| 黄片免费观看一区二区| 亚洲清纯一区二区三区| 国产中文另类天堂二区| 亚洲一区二区三区免费的视频| 国产欧美亚洲精品自拍| 国产又粗又猛又大爽又黄| 欧美国产在线观看精品| 久久99精品日韩人妻| 国产综合香蕉五月婷在线| 欧美91精品国产自产| 中日韩免费一区二区三区| 亚洲伦片免费偷拍一区| 日韩精品综合福利在线观看| 爱草草在线观看免费视频| 欧美激情床戏一区二区三| 亚洲中文字幕日韩在线| 国产又粗又深又猛又爽又黄| 国产亚洲欧美一区二区| 九九九热视频免费观看| 成人欧美一区二区三区视频| 精品人妻一区二区三区免费看| 欧美一区二区三区不卡高清视| 99久久国产亚洲综合精品| 亚洲高清中文字幕一区二区三区 | 日韩人妻欧美一区二区久久| 日本精品中文字幕在线视频 | 清纯少妇被捅到高潮免费观看| 国产精品亚洲欧美一区麻豆| 欧美日韩亚洲巨色人妻| 精品国产亚洲av久一区二区三区| 日本加勒比在线播放一区| 人妻熟女中文字幕在线| 欧美日韩视频中文字幕| 91日韩欧美在线视频| 欧美成人免费一级特黄| 中文字幕乱码免费人妻av| 欧美大粗爽一区二区三区| 免费国产成人性生活生活片| 日韩欧美精品一区二区三区| 国产91人妻精品一区二区三区|