js里的享元模式与对象池
享元模式
享元模式
享元模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。
该模式在遇到会创建大量相似的对象的情况下很有用,它把多个相似对象的共同点封装起来,把不同点作为外部变量来传入,这样就可以节省空间。
享元模式有点像状态模式,但是状态模式把状态对象缓存进自己里面,享元模式是接收一个对象,再按照对象来执行。
像是这样,就不需要创建50个对象来执行它们的takephoto,只需要一个对象即可:
class Model {
constructor(gender) {
this.gender = gender;
}
takephoto() {
console.log(`${this.gender}穿着${this.underwear}`);
}
}
const model = new Model("model");
for (let i = 1; i < 51; i++) {
model.underwear = `第${i}款衣服`;
model.takephoto();
}
对象池
对象池也是用来节省对象实例化的一个方法。
对象池可以实例化多个对象,这些对象在不需要时会被回收进对象池,如果下次再次实例化,会优先返回对象池中的对象,如果对象池中没有对象再进行实例化。在实现上有点类似于单例模式:
const Pool = (function () {
const pools = [];
return class {
constructor() {
if (pools.length) {
return pools.pop();
}
}
recover() {
pools.push(this);
}
};
})();

浙公网安备 33010602011771号