介绍
享元模式运用共享技术来有效地支持大量细粒度的复用,以减少创建的对象的数量。
享元模式可以简单的理解为:单例模式 + 工厂模式 + 管理器, 管理器对外部状态进行管理组合成完整的对象。
传统的享元模式是将目标对象的状态区分为内部状态和外部状态, 内部状态相同的对象可以被共享出来指向同一个内部状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
class FlyWeightFactory { constructor() { this.flyweights = {}; } getFlyweight(key) { if (!this.flyweights[key]) { this.flyweights[key] = new ConcreteFlyweight(); } return this.flyweights[key]; } }
class Flyweight { isUsed = false; operation() {} }
class ConcreteFlyweight extends Flyweight { operation(extrinsicState) { console.log(`具体享元对象操作,外部状态:${extrinsicState}`); } }
const factory = new FlyWeightFactory()
const flyweightA = factory.getFlyweight('A') flyweightA.operation('A') const flyweightB = factory.getFlyweight('B') flyweightB.operation('B')
|