享元(Flyweight)模式:运用共享技术有效的支持大量细粒度的对象。
Flyweight:享元类抽象接口;
ConcreteFlyweight:实现具体享元接口,并为内部状态增加内部存储空间;
UnsharedConcreteFlyweight:不被强制贡献的Flyweight;
FlyweightFactory:创建并管理flyweight对象,当请求一个flyweight时,提供一个已创建的实例或创建一个;
适用性:
(1)当应用重新使用了大量对象,造成很大存储开销时;
(2)对象的大多数状态都是外部状态;
(3)如果删除对象的外部状态,可以使用较少的共享对象取代很多组对象;
(4)应用程序不依赖于对象标识;
(5)需要缓冲池的场景;
优点:
(1)共享的Flyweight越多,存储节约也就越多;