魚躍于淵

          First know how, Second know why !
          posts - 0, comments - 1, trackbacks - 0, articles - 49

          單例模式(SingleTon)

          Posted on 2008-12-20 18:12 魚躍于淵 閱讀(258) 評論(0)  編輯  收藏 所屬分類: 設計模式
           1 package com.givetop.singleton;
           2 
           3 public class singleton {
           4 
           5 
           6  public static void main(String[] args) {
           7   Single.getSingleton().say();
           8  }
           9 
          10 }
          11 
          12 class Single{
          13  private static Single s = new Single();
          14  public static Single getSingleton(){
          15   return Single.s;
          16  }
          17  private Single(){
          18   
          19  }
          20  public void say(){
          21   System.out.println("我開始說話了!");
          22  }
          23 }
          24 

          //思想是: 所謂單例就是只有一個實例存在(把類的構造方法設為私有的,防止在類的外面new類的實例), 這樣減少了內存的占有量, 而且還減輕了垃圾回收機制的負擔!

          下面看幾個設計的不好的例子!

          一.直接在類的內部設一個靜態的該類的類型!

           

           1 package com.givetop.singleton;
           2 
           3 public class singleton {
           4 
           5 
           6     public static void main(String[] args) {
           7         Single.s.say();
           8     }
           9 
          10 }
          11 
          12 class Single{
          13     static Single s = new Single();
          14     private Single(){
          15         
          16     }
          17     public void say(){
          18         System.out.println("我開始說話了!");
          19     }
          20 }

          該類雖然實現了只能new一個實例但 s 屬性是default的, 破壞了類的封裝, 算不上是好的類的設計!
          好的方法是應該把該屬性設為私有的, 然后在類里面提供一個公有的方法返回這個實例


           


           


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


          網站導航:
           
          主站蜘蛛池模板: 赤峰市| 河津市| 靖宇县| 卢湾区| 汕尾市| 郧西县| 如皋市| 博客| 普宁市| 顺义区| 富川| 察雅县| 武乡县| 舞阳县| 莲花县| 珠海市| 宽城| 遂溪县| 水富县| 汝城县| 通榆县| 梅河口市| 辉南县| 宜黄县| 大埔区| 鹤庆县| 仪陇县| 石城县| 凌源市| 稻城县| 修文县| 信阳市| 凌海市| 类乌齐县| 沙洋县| 内丘县| 尼勒克县| 双城市| 涡阳县| 枞阳县| 陕西省|