憨厚生

          ----Java's Slave----
          ***Java's Host***

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks

          java模式之單例模式:
          ????????? 單例模式確保一個類只有一個實例,自行提供這個實例并向整個系統提供這個實例。
          ?特點:
          ?????? 1,一個類只能有一個實例
          ?????? 2,自己創建這個實例
          ?????? 3,整個系統都要使用這個實例
          例: 在下面的對象圖中,有一個"單例對象",而"客戶甲"、"客戶乙" 和"客戶丙"

          是單例對象的三個客戶對象。可以看到,所有的客戶對象共享一個單例對象。而

          且從單例對象到自身的連接線可以看出,單例對象持有對自己的引用。
          fasdf

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

          在。在很多操作中,比如建立目錄 數據庫連接都需要這樣的單線程操作。
          一些資源管理器常常設計成單例模式。
          外部資源:譬如每臺計算機可以有若干個打印機,但只能有一個Printer

          Spooler,以避免兩個打印作業同時輸出到打印機中。每臺計算機可以有若干個通

          信端口,系統應當集中管理這些通信端口,以避免一個通信端口被兩個請求同時

          調用。
          內部資源,譬如,大多數的軟件都有一個(甚至多個)屬性文件存放系統配置。

          這樣的系統應當由一個對象來管理這些屬性文件。

          一個例子:Windows 回收站。
          在整個視窗系統中,回收站只能有一個實例,整個系統都使用這個惟一的實例,

          而且回收站自行提供自己的實例。因此,回收站是單例模式的應用。

          兩種形式:
          1,餓漢式單例類
          public class Singleton {

            private Singleton(){}

            //在自己內部定義自己一個實例,是不是很奇怪?
            //注意這是private 只供內部調用

            private static Singleton instance = new Singleton();

            //這里提供了一個供外部訪問本class的靜態方法,可以直接訪問  
            public static Singleton getInstance() {
              return instance;   
             }
          }

          2,懶漢式單例類

          public class Singleton {

            private static Singleton instance = null;

            public static synchronized Singleton getInstance() {

            //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次   

           
            //使用時生成實例,提高了效率!
            if (instance==null)
              instance=new Singleton();
            return instance;   }

          }


          第二中形式是lazy initialization,也就是說第一次調用時初始Singleton,以后就不用再生成了。


          注意到lazy initialization形式中的synchronized,這個synchronized很重要,如果沒有synchronized,那么使用getInstance()是有可能得到多個Singleton實例。
          一般來說第一種比較安全。

          posted on 2007-01-15 16:16 二胡 閱讀(165) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 隆尧县| 会东县| 哈密市| 霍州市| 武乡县| 亚东县| 西乌珠穆沁旗| 驻马店市| 苏尼特左旗| 嘉鱼县| 夹江县| 毕节市| 子长县| 麟游县| 纳雍县| 澄迈县| 利川市| 罗甸县| 夏邑县| 四平市| 定西市| 长沙市| 荃湾区| 高要市| 行唐县| 揭阳市| 哈密市| 娄烦县| 康定县| 兰西县| 黄平县| 鄂温| 浮山县| 长兴县| 浦城县| 咸宁市| 资源县| 桃源县| 海南省| 远安县| 巴东县|