flyweight模式学习笔记

   flyweight享元模式的意图是共享细粒度对象。考虑一个文字编辑程序,没有必要为每个字符都创建一个对象。flyweight模式提出的方案是每个对象可分为外部对象和内部对象。内部对象即为能够共享的部分,独立于使用场景,外部对象即为场景信息。具体到字符对象,内部信息可以使字符的值这样可以共享的信息,外部信息则是字符的大小颜色字体这样不能够被共享的信息。设置一个共享池,当字符不存在时创建一个共享对象,存在时则直接使用。

•Flyweight
— 描述一个接口,通过这个接口Flyweight可以接受并作用于外部状态。
• ConcreteFlyweight
— 实现Flyweight接口, 并为内部状态( 如果有的话) 增加存储空间。
ConcreteFlyweight对象必须是可共享的。它所存储的状态必须是内部的;即,它必
须独立于Concrete Flyweight对象的场景。
• UnsharedConcreteFlyweight
— 并非所有的Flyweight子类都需要被共享。Flyweight接口使共享成为可能,但它并不强制共享。在Flyweight对象结构的某些层次, UnsharedConcreteFlyweight对象通常
将ConcreteFlyweight对象作为子节点。
• FlyweightFactory
— 创建并管理Flyweight对象。
— 确保合理地共享Flyweight。当用户请求一个Flyweight时,FlyweightFactory对象提供一个已创建的实例或者创建一个(如果不存在的话)。
• Client
— 维持一个对Flyweight的引用。
— 计算或存储一个(多个)Flyweight的外部状态。

posted on 2012-05-02 20:26 Marv 阅读(221) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿

随笔档案

文章分类

搜索

最新评论

阅读排行榜

评论排行榜