js设计模式学习笔记(十一):享元模式

47 阅读1分钟

享元模式

特点

  • 共享内存(主要考虑吧内存,而非效率)
  • 相同的数据,共同享用
  • 一些具有相同属性的对象,会被拆分出一个公用对象用于保存共有属性,其他属性各自保管,当需要使用时再和公用对象组合在一起完成业务

介绍

  • 内部属性存储与对象内部
  • 内部属性可以被一些对象共享
  • 内部属性独立于具体场景,通常不会发生改变
  • 外部属性取决于具体场景,并根据场景而变化,外部属性不能被共享

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}`);
}