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

          緩存(共享)可以共同的對(duì)象、屬性,避免創(chuàng)建大量的重復(fù)對(duì)象、內(nèi)容。

          二、Flyweight模式的特點(diǎn):

          為重復(fù)或可共享的對(duì)象、屬性設(shè)置一個(gè)緩沖,稱為內(nèi)部屬性。這些內(nèi)部屬性一般情況下都是不可修改的,也就是在第一個(gè)對(duì)象、屬性被創(chuàng)建后,就不會(huì)去修改了(否則就沒(méi)意義了)。

          除了共享對(duì)象、屬性之外,還有一些是基于應(yīng)用環(huán)境,或是實(shí)時(shí)數(shù)據(jù),這些無(wú)法共享的東西我們稱為外部狀態(tài)。

          在Flyweight模式應(yīng)用中,通常修改的是外部狀態(tài)屬性,而內(nèi)部狀態(tài)屬性一般都是用于參考或計(jì)算時(shí)引用。

          三、Flyweight模式的構(gòu)成:


          Flyweight模式一般由幾個(gè)部分組成:

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

          四、Flyweight模式的重點(diǎn):

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

            
          public Flyweight getFlyweight( Object key ) 

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

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

              
          return flyweight; 
            }
           
          }
           

          也就是在緩沖這一點(diǎn)上,體現(xiàn)了Flyweight模式的精髓。


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

          常用鏈接

          留言簿(21)

          隨筆分類(lèi)

          隨筆檔案

          BlogJava熱點(diǎn)博客

          好友博客

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 琼中| 阿勒泰市| 太仆寺旗| 巫山县| 广灵县| 桐梓县| 冀州市| 红原县| 彰武县| 辽宁省| 呼和浩特市| 鲁山县| 应城市| 公主岭市| 宜丰县| 宁安市| 原平市| 乌兰浩特市| 香港 | 聊城市| 秦皇岛市| 吉林省| 安多县| 济源市| 化隆| 亚东县| 鄂尔多斯市| 永年县| 蒙山县| 太仆寺旗| 尼玛县| 凉城县| 武夷山市| 博乐市| 太和县| 平江县| 荆门市| 大竹县| 罗甸县| 贵定县| 六枝特区|