創(chuàng)建模式-singleon單例模式

          一:使用場景

              1)經(jīng)常使用的地方:一個類只有一個實例,eg:頁面訪問統(tǒng)計pv,統(tǒng)計的個數(shù)就只能保證一個實例的統(tǒng)計。

              2)我們目前使用的情況:比如我想創(chuàng)建一個對象,這個對象希望只有一份實例的維護,在內(nèi)存的保存也只有一份,也就是在同一個jvm的java堆里只保存一份實例對象,所以你會想一辦法,在創(chuàng)建這個對象的時候,就已經(jīng)能保證只有一份。

              3)怎么改進:定義該對象的時候,就保證是同一份實例,比如:定義為私有構(gòu)造函數(shù),防止通過new的方式可以創(chuàng)建對象,然后在對象里定義一個靜態(tài)的私有成員(本身對象的一個實例),然后再創(chuàng)建一個外面訪問該對象的方法就好了。

              4)改進的好處:代碼在編譯代碼這個級別就被控制了,不至于在jvm里運行的時候才來保證,把唯一實例的創(chuàng)建保證在編譯階段;jvm里內(nèi)存只有一份,從而內(nèi)存占有率更低,以及更方便java垃圾回收

              5)改進后的壞處:只能是代碼稍微需要更多點,其實大家最后發(fā)現(xiàn)改進后的壞處,都是代碼定義比之間要多一點,但以后的維護代碼就降下來了,也短暫的代碼量偏大來換取以后代碼的精簡。

          二:一個實際的例子

          總體的例子

          package com.mike.pattern.singleton;

          /**
          * 總統(tǒng)

          * @author taoyu

          * @since 2010-6-22
          */
          public class President {
          private President(){
             System.out.println("總統(tǒng)已經(jīng)選舉出來了");
          }

          /**總統(tǒng)只有一個*/
          private static President president=new President();

          /**
          * 返回總統(tǒng)
          */
          public static President getPresident(){
             return president;
          }

          /**
          * 總統(tǒng)宣布選舉成功
          */
          public void announce(){
             System.out.println("偉大的中國人民,我將成你們新的總統(tǒng)");
          }
          }

          /**
          * @param args
          */
          public static void main(String[] args) {
             President president=President.getPresident();
             president.announce();
          }

          posted on 2012-08-06 17:33 陳睿 閱讀(476) 評論(0)  編輯  收藏 所屬分類: 設(shè)計模式

          導航

          <2012年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 天水市| 平远县| 龙陵县| 巴青县| 漠河县| 台州市| 新乡市| 靖安县| 贵南县| 佛学| 灌云县| 台山市| 阜南县| 南京市| 双峰县| 佛冈县| 镇平县| 祁阳县| 潮安县| 太仆寺旗| 吉林市| 施甸县| 八宿县| 东海县| 绥江县| 长葛市| 玛曲县| 樟树市| 阿克苏市| 临澧县| 五家渠市| 崇义县| 大厂| 十堰市| 毕节市| 集贤县| 海丰县| 琼结县| 平塘县| 崇信县| 周至县|