目录

大话设计模式26:享元模式

大话设计模式:26.享元模式

享元模式:运用共享技术有效地支持大量细粒度的对象

TL;DR:通过将可共享的内部状态保留在类内,外部状态在调用时传入,实现大幅度较少实例数量,降低开销

享元模式结构图

1.优点

  1. 避免大量非常相似的开销

2.实现细节

  1. Flyweight 类:所有具体享元类的超类/接口,通过这个接口,Flyweight 可以接受并作用于外部状态
  2. ConcreteFlyweight 类:继承/实现 Flyweight,为内部状态增加存储空间
  3. UnsharedConcreteFlyweight 类:指那些不需要共享的 Flyweight 子类
  4. FlyweightFactory 类:享元工厂,创建并管理 Flyweight 对象,确保合理地共享 Flyweight,当用户请求一个 Flyweight 时,工厂为其提供一个已创建的实例,如果不存在则创建一个

3.使用场景

  1. 如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时
  2. 对象的大多数状态是外部状态,如果将对象的外部状态移出类内,可以用相对较少的共享对象代替很多组对象时