享元模式要求将对象的属性划分为内部状态与外部状态(状态在这里通常指属性)
    享元模式的目标是尽量减少共享对象的数量

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

    享元模式是为解决性能问题而生的模式,享元模式可以很好地解决大量对象带来的性能问题

    1. var maleModel = new Model('male'),
    2. femaleModel = new Model('female')
    3. for (var i = 1; i <= 50; i++) {
    4. maleModel.underwear = 'underwear' + i
    5. maleModel.takePhoto()
    6. }
    7. for (var j = 1; j <= 50; j++) {
    8. femaleModel.underwear = 'underwear' + j
    9. femaleModel.takePhoto()
    10. }

    通过共享两个模特对象而不是针对每种内衣new一个模特对象出来,大量节省了资源