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 阅读(2754) 评论(0)  编辑  收藏 所属分类: 模式与重构

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(19)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜