一, 定义
一种用于性能优化的模式, 运用共享技术来有效支持大量细粒度的对象.
二, 场景和实现
假如有一个内衣工厂, 先生产了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(); // 换上内衣之后拍照
}
三, 总结
享元模式,主要要分清内部状态和外部状态, 内部状态是不可改变的, 外部状态可以根据场景切换.