Singleton(單態(tài))

          中心思想:

          是保證在Java應用程序中,一個類Class只有一個實例存在


          主要作用:
          Singleton
          模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。

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

          使用Singleton的好處還在于可以節(jié)省內(nèi)存,因為它限制了實例的個數(shù),有利于Java垃圾回收(garbage collection)。 

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


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

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

          上面是餓漢式,可以多線程。

          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;
           }

            
          }



          只適合單線程的條件下,如果使用多線程的話,那么必須采用synchronized來修飾方法,使得每個線程進入此方法前都要等待別的線程離開此方法。也就是說不會有2個線程同時進入方法。

          posted on 2009-04-11 01:46 luofeng225 閱讀(221) 評論(0)  編輯  收藏 所屬分類: 設計模式

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

          導航

          統(tǒng)計

          公告

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

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          收藏夾

          Java Website

          java技術博客

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 临夏市| 伊金霍洛旗| 托克托县| 林口县| 隆子县| 澎湖县| 怀安县| 连南| 民乐县| 宜丰县| 靖江市| 阿瓦提县| 恩平市| 武平县| 拜城县| 南阳市| 伽师县| 南雄市| 出国| 漯河市| 绥德县| 高平市| 岳阳县| 巴青县| 漠河县| 亳州市| 宁陵县| 山阳县| 元江| 黎城县| 饶阳县| 永年县| 辽中县| 万全县| 元江| 旺苍县| 武夷山市| 南皮县| 防城港市| 盐城市| 依兰县|