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

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)如果外部状态用计算得出,而非用存储,能节省更大的存储空间。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值