享元模式要求将对象的属性划分为内部状态与外部状态(状态在这里通常指属性)
享元模式的目标是尽量减少共享对象的数量
- 内部状态存储于对象内部
- 内部状态可以被一些对象共享
- 内部状态独立于具体的场景,通常不会改变
- 外部状态取决于具体的场景,并根据场景而变化,外部状态不能被共享
享元模式是为解决性能问题而生的模式,享元模式可以很好地解决大量对象带来的性能问题
var maleModel = new Model('male'),
femaleModel = new Model('female')
for (var i = 1; i <= 50; i++) {
maleModel.underwear = 'underwear' + i
maleModel.takePhoto()
}
for (var j = 1; j <= 50; j++) {
femaleModel.underwear = 'underwear' + j
femaleModel.takePhoto()
}
通过共享两个模特对象而不是针对每种内衣new一个模特对象出来,大量节省了资源