Swing


          天行健 君子以自強不息

          posts - 69, comments - 215, trackbacks - 0, articles - 16
             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          設計模式:創建模式之Singleton(單態)

          Posted on 2007-05-30 10:11 zht 閱讀(323) 評論(0)  編輯  收藏 所屬分類: 設計模式
          Singleton應該說是平時用的最多的一種模式之一
          Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
          一般Singleton模式通常有幾種形式:

          public class Singleton {

            private Singleton(){}

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

            private static Singleton instance = new Singleton();

            //這里提供了一個供外部訪問本class的靜態方法,可以直接訪問  
            public static Singleton getInstance() {
              return instance;   
             }
          //當程序第一次調用getInstance的時候初始化Singleton 類 同時初始化static字段 產生唯一的對象實例
          }

           

          第二種形式:

          public class Singleton {

            private static Singleton instance = null;

            public static synchronized Singleton getInstance() {

            //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次     
            //使用時生成實例,提高了效率!
            if (instance==null)
              instance=new Singleton();
            return instance;   }

          }

           

          使用Singleton.getInstance()可以訪問單態類。

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

          注意到lazy initialization形式中的synchronized,這個synchronized很重要,如果沒有synchronized,那么使用getInstance()是有可能得到多個Singleton實例。

          一般認為第一種形式要更加安全些。

          主站蜘蛛池模板: 太和县| 西华县| 衢州市| 蕲春县| 盐山县| 田林县| 林芝县| 临湘市| 邵武市| 苍山县| 突泉县| 闽侯县| 互助| 淮安市| 梅州市| 区。| 东港市| 石林| 禄丰县| 大竹县| 老河口市| 衡阳县| 塔河县| 紫阳县| 嘉鱼县| 延庆县| 宁陕县| 会昌县| 噶尔县| 陈巴尔虎旗| 扎鲁特旗| 通江县| 且末县| 武宣县| 敖汉旗| 茂名市| 江北区| 昭苏县| 克拉玛依市| 重庆市| 青海省|