魚躍于淵

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

          單例模式(SingleTon)

          Posted on 2008-12-20 18:12 魚躍于淵 閱讀(261) 評論(0)  編輯  收藏 所屬分類: 設(shè)計模式
           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 

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

          下面看幾個設(shè)計的不好的例子!

          一.直接在類的內(nèi)部設(shè)一個靜態(tài)的該類的類型!

           

           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 }

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


           


           


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宁河县| 罗田县| 同心县| 昌乐县| 普陀区| 安徽省| 浦县| 葫芦岛市| 西贡区| 怀远县| 西藏| 宜丰县| 新宾| 定州市| 财经| 宁蒗| 绥江县| 房产| 仁寿县| 昂仁县| 宜章县| 常熟市| 苍南县| 固始县| 元江| 云浮市| 涞源县| 贡嘎县| 泗洪县| 嘉义市| 星子县| 贵港市| 成安县| 上杭县| 弥渡县| 观塘区| 新绛县| 宁安市| 汝南县| 洱源县| 若尔盖县|