前端设计模式(8)--享元模式

92 阅读1分钟

一, 定义

一种用于性能优化的模式, 运用共享技术来有效支持大量细粒度的对象.

二, 场景和实现

假如有一个内衣工厂, 先生产了50中男士内衣和50中女士内衣, 为了推销产品, 工厂需要生产一些塑料模特来演示产品, 正常情况下需要50个男模特和50个女模特, 然后让他们分别穿上一种内衣来拍照.

但是, 其实我们只需要一个男模特和一个女模特就行了, 让他们分别穿上50种内衣即可. 这就是享元模式

// 享元模式
// 性别是创建的时候决定的
const Model = function (sex) {
  this.sex = sex;
};
Model.prototype.takePhoto = function () {
  console.log(`sex:${this.sex} underwear: ${this.underwear}`);
};

const maleModel = new Model('male');
for (let i = 1; i < 51; i++) {
  maleModel.underwear = `underwear: ${i}`; // 内衣种类可以切换
  maleModel.takePhoto(); // 换上内衣之后拍照
}

const femaleModel = new Model('female');
for (let i = 1; i < 51; i++) {
  femaleModel.underwear = `underwear: ${i}`; // 内衣种类可以切换
  femaleModel.takePhoto(); // 换上内衣之后拍照
}

三, 总结

享元模式,主要要分清内部状态和外部状态, 内部状态是不可改变的, 外部状态可以根据场景切换.