享元模式 
享元模式(Flyweight Pattern)运用共享技术有效地支持大量细粒度对象的复用。
示意图 

示例代码 
ts
interface Flyweight {
  operation(): void;
}
class ConcreteFlyweight implements Flyweight {
  operation(): void {}
}
class FlyweightFactory {
  private flyweights: Map<string, Flyweight> = new Map();
  getFlyweight(key: string): Flyweight {
    if (!this.flyweights.has(key)) {
      const flyweight = new ConcreteFlyweight();
      this.flyweights.set(key, flyweight);
    }
    return this.flyweights.get(key)!;
  }
}interface Flyweight {
  operation(): void;
}
class ConcreteFlyweight implements Flyweight {
  operation(): void {}
}
class FlyweightFactory {
  private flyweights: Map<string, Flyweight> = new Map();
  getFlyweight(key: string): Flyweight {
    if (!this.flyweights.has(key)) {
      const flyweight = new ConcreteFlyweight();
      this.flyweights.set(key, flyweight);
    }
    return this.flyweights.get(key)!;
  }
}优缺点 
优点 
- 大大减少对象的创建,降低内存的占用情况。
 
缺点 
- 提高了系统的复杂度,需要分离出外部状态和内部状态。
 
使用场景 
- 系统中有大量相同或者相似的对象,由于这类对象的大量使用,造成内存的大量耗费。