享元模式
特点
- 共享内存(主要考虑吧内存,而非效率)
- 相同的数据,共同享用
- 一些具有相同属性的对象,会被拆分出一个公用对象用于保存共有属性,其他属性各自保管,当需要使用时再和公用对象组合在一起完成业务
介绍
- 内部属性存储与对象内部
- 内部属性可以被一些对象共享
- 内部属性独立于具体场景,通常不会发生改变
- 外部属性取决于具体场景,并根据场景而变化,外部属性不能被共享
demo
更多详细代码
function Model(sex){
this.sex = sex;
}
Model.prototype.takePhoto = function(cloth){
console.log(`Model sex is ${this.sex},wear ${cloth}`);
}
const male = new Model("male");
const female = new Model("female");
// 性别 是内部属性不会发生变化,但是穿的衣服会随场景发生变化,是外部属性。
// 这样可以节省开销,不用创建多个穿衣服的model,而是一个model穿多件衣服。
for(let i=0;i<10;i++){
male.takePhoto(`cloth-${i}`);
}
for(let i=0;i<10;i++){
female.takePhoto(`cloth-${i}`);
}