Singleton(單態(tài))

          中心思想:

          是保證在Java應(yīng)用程序中,一個(gè)類(lèi)Class只有一個(gè)實(shí)例存在


          主要作用:
          Singleton
          模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類(lèi)Class只有一個(gè)實(shí)例存在。

          在很多操作中,比如建立目錄 數(shù)據(jù)庫(kù)連接都需要這樣的單線(xiàn)程操作。

          使用Singleton的好處還在于可以節(jié)省內(nèi)存,因?yàn)樗拗屏藢?shí)例的個(gè)數(shù),有利于Java垃圾回收(garbage collection)。 

          Singleton
          也能夠被無(wú)狀態(tài)化。提供工具性質(zhì)的功能,


          具體操作步驟:
          1,private構(gòu)造方法
          2,private靜態(tài)成員引用
          3,public的靜態(tài)方法提供給外部使用。

           1 public   class  Singleton  {
           2    private  Singleton() {}
           3    // 在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?
           4    // 注意這是private 只供內(nèi)部調(diào)用
           5 private   static  Singleton instance  =   new  Singleton();
           6
           7    // 這里提供了一個(gè)供外部訪(fǎng)問(wèn)本class的靜態(tài)方法,可以直接訪(fǎng)問(wèn)  
           8    public   static  Singleton getInstance()  {
           9      return  instance;   
          10    }
           
          11 }
           
          12

          上面是餓漢式,可以多線(xiàn)程。

          public class LazySingleton
          {
            /**
               * @label Creates
               */
              private static LazySingleton m_instance = null;
             
              private LazySingleton() { }

              (synchronized )public static LazySingleton getInstance()
              {
               if (m_instance == null)
               {
                   m_instance = new LazySingleton();
               }
               return m_instance;
           }

            
          }



          只適合單線(xiàn)程的條件下,如果使用多線(xiàn)程的話(huà),那么必須采用synchronized來(lái)修飾方法,使得每個(gè)線(xiàn)程進(jìn)入此方法前都要等待別的線(xiàn)程離開(kāi)此方法。也就是說(shuō)不會(huì)有2個(gè)線(xiàn)程同時(shí)進(jìn)入方法。

          posted on 2009-04-11 01:46 luofeng225 閱讀(221) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 設(shè)計(jì)模式

          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          我曾經(jīng)聽(tīng)到這么一個(gè)故事: 一個(gè)年輕的程序員問(wèn)一個(gè)老程序員(一個(gè)比較牛逼的公司的CTO) 年輕程序員: 你為什么這么牛X., 就好像沒(méi)有你不會(huì)的。老程序員: 積累的。年輕程序員: 怎么才能積累到您的程度呢。我每天都在積累。但是似乎都沒(méi)有感覺(jué)到進(jìn)步。老程序員: 我從20歲開(kāi)始做到了一件事情,直到今天,而且盡可能地保證不間斷。年輕程序員: 到底是什么? 老程序員: 我每天保證自己有2個(gè)小時(shí)在學(xué)習(xí)新的東西。

          常用鏈接

          留言簿(3)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          相冊(cè)

          收藏夾

          Java Website

          java技術(shù)博客

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 东光县| 夹江县| 云南省| 叙永县| 凤山市| 休宁县| 连平县| 新郑市| 延吉市| 周口市| 高淳县| 齐齐哈尔市| 宣武区| 怀安县| 镇康县| 安吉县| 永善县| 靖安县| 岫岩| 微山县| 乌鲁木齐市| 阳西县| 乃东县| 荆门市| 岳普湖县| 平舆县| 南澳县| 焉耆| 颍上县| 林芝县| 策勒县| 保亭| 和顺县| 静乐县| 芜湖县| 资溪县| 浑源县| 沿河| 蓬安县| 镇江市| 航空|