您的位置:首页 > 其它

[设计模式学习笔记]享元模式(FYLWEIGHT)

2015-07-04 21:23 204 查看
1、意图

运用共享技术,有效地支持大量细粒度的对象。

2、类图



3、说明

1) 关键是内部状态和外部状态的区别,内部状态存储于flyweight中,它包含了独立于flyweight场景的信息,这些信息使得flyweight可以被共享。而外部状态取决于flyweight的场景,并根据场景而变化,外部状态信息不能被共享。用户负责在必要的时候,把外部状态信息传递给flyweight。注意,

共享的是对象,不是类。

比如书中的例子,做一个文本编辑器,以ASCII编码为例,每个字符对象就是一个flyweight对象,可以被共享。而字体、文字位置等信息是外部状态。

2) UnsharedConcreteFlyweight

并非所有FlyWeight子类都被共享,在Flyweight的层次结构中,UnsharedConcreateFlyweight通常将ConcreteFlyweight的对象作为子节点。例如row,column都是UnsharedConcreteFlyweight.

3)不应直接对ConcreteFlyweight类进行实例化,而只能从FlyweightFactory得到ConcreteFlyweight对象,这样可以保证对它们进行适当的共享。

4)如果外部状态用计算得出,而非用存储,能节省更大的存储空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: