大话设计模式26:享元模式
目录
大话设计模式:26.享元模式
享元模式:运用共享技术有效地支持大量细粒度的对象
TL;DR:通过将可共享的内部状态保留在类内,外部状态在调用时传入,实现大幅度较少实例数量,降低开销
1.优点
- 避免大量非常相似的开销
2.实现细节
- Flyweight 类:所有具体享元类的超类/接口,通过这个接口,Flyweight 可以接受并作用于外部状态
- ConcreteFlyweight 类:继承/实现 Flyweight,为内部状态增加存储空间
- UnsharedConcreteFlyweight 类:指那些不需要共享的 Flyweight 子类
- FlyweightFactory 类:享元工厂,创建并管理 Flyweight 对象,确保合理地共享 Flyweight,当用户请求一个 Flyweight 时,工厂为其提供一个已创建的实例,如果不存在则创建一个
3.使用场景
- 如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时
- 对象的大多数状态是外部状态,如果将对象的外部状态移出类内,可以用相对较少的共享对象代替很多组对象时