posts - 262,  comments - 221,  trackbacks - 0
          一、Flyweight模式的意圖:

          緩存(共享)可以共同的對象、屬性,避免創建大量的重復對象、內容。

          二、Flyweight模式的特點:

          為重復或可共享的對象、屬性設置一個緩沖,稱為內部屬性。這些內部屬性一般情況下都是不可修改的,也就是在第一個對象、屬性被創建后,就不會去修改了(否則就沒意義了)。

          除了共享對象、屬性之外,還有一些是基于應用環境,或是實時數據,這些無法共享的東西我們稱為外部狀態。

          在Flyweight模式應用中,通常修改的是外部狀態屬性,而內部狀態屬性一般都是用于參考或計算時引用。

          三、Flyweight模式的構成:


          Flyweight模式一般由幾個部分組成:

          ·Flyweight接口(抽象類) :定義了一個可共享的元類
          ·Flyweight實現類:實現了元類中的操作,而且可能會提供一個用于保存內部狀態(共享屬性)的空間
          ·Flyweight Factory:創建Flyweight的工廠類,創建后將其保存到Flyweight Pool中
          ·Flyweight Pool:緩沖Flyweight對象的池,通常包含在工廠類中

          四、Flyweight模式的重點:

          public class FlyweightFactory 
            
          //Flyweight pool
            private Hashtable flyweights = new Hashtable(); 

            
          public Flyweight getFlyweight( Object key ) 

              Flyweight flyweight 
          = (Flyweight) flyweights.get(key); 

              
          if( flyweight == null ) {
                
          //產生新的ConcreteFlyweight
                flyweight = new ConcreteFlyweight(); 
                flyweights.put( key, flyweight ); 
              }
           

              
          return flyweight; 
            }
           
          }
           

          也就是在緩沖這一點上,體現了Flyweight模式的精髓。


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2008-03-05 14:33 Paul Lin 閱讀(2983) 評論(0)  編輯  收藏 所屬分類: 模式與重構
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 伊宁县| 监利县| 永泰县| 搜索| 延津县| 铁岭市| 保德县| 宁蒗| 绥江县| 进贤县| 勃利县| 炎陵县| 德安县| 井陉县| 乐至县| 新营市| 永新县| 金溪县| 马山县| 奇台县| 沭阳县| 长沙市| 如皋市| 巴林左旗| 徐州市| 太谷县| 同仁县| 丽江市| 昌乐县| 沧州市| 武山县| 株洲市| 陵川县| 临桂县| 五寨县| 东乌珠穆沁旗| 广丰县| 广水市| 城口县| 乃东县| 墨脱县|