無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Singleton 模式

          Posted on 2009-06-01 21:25 Gavin.lee 閱讀(215) 評論(0)  編輯  收藏 所屬分類: java design pattern

          單態類概念:Singleton 是一種創建性模型,它用來確保在整個軟件系統中,某個類只產生一個實例,并提供一個訪問它的全局訪問點.對一些類來說,保證只有一個實例是很重要的,比如有的時候,數據庫連接或 Socket 連接要受到一定的限制,必須保持同一時間只能有一個連接的存在.再舉個例子,集合中的 set 中不能包含重復的元素,添加到set里的對象必須是唯一的,如果重復的值添加到 set,它只接受一個實例.JDK中正式運用了Singleton模式來實現 set 的這一特性,大家可以查看java.util.Collections里的內部靜態類SingletonSet的原代碼.其實Singleton是最簡單但也是應用最廣泛的模式之一,在 JDK 中隨處可見.

          單態類的特性:
          1、單態類只可有一個實例。
          2、它必須自己創立自己這唯一的一個實例。
          3、它必須給所有其它的類提供自己這一實例。

          餓漢式:
          public class EagerSingleton {
              private static final EagerSingleton instance = new EagerSingleton();
              private EagerSingleton() { }
              public static EagerSingleton getInstance() {
               return instance;
              }
          }

          懶漢式:
          public static LazySingleton getInstance(){
              private static LazySingleton m_instance = null;
              private LazySingleton(){}

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

          其實學了一點java的初學者,寫一個單態類,是絕對沒問題的,但是想用好它,好像就沒那么簡單了,http://www.uml.org.cn/sjms/200903103.asp 這篇文章寫的非常好。先到這里,以后等擺脫菜鳥的稱號了再來仔細想想單態模式。期待中……


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


          網站導航:
           
          主站蜘蛛池模板: 清苑县| 宣汉县| 慈溪市| 弋阳县| 临西县| 无为县| 建阳市| 正定县| 三台县| 本溪| 石棉县| 铜川市| 忻州市| 固镇县| 台山市| 大渡口区| 镇安县| 神池县| 阿拉善左旗| 南华县| 楚雄市| 永胜县| 武冈市| 宜都市| 江山市| 洛浦县| 阳原县| 大城县| 安康市| 鄄城县| 原平市| 武宣县| 上饶市| 旬阳县| 龙州县| 澄城县| 河津市| 都昌县| 八宿县| 湾仔区| 曲阜市|