js享元模式简单案例

    <script>
        var Model = function( sex ){
           this.sex = sex;
        };
        
        Model.prototype.takePhone = function(){
           console.log( "sex = " + this.sex + " " + "underwear = " + this.underwear );
        };
        
        //分别创建一个男模特和一个女模特
        var maleModel = new Model( "male" );
        var femaleModel = new Model( "female" );
        //给男模特依次穿上所有的男装,并进行拍照
        for( var i = 0; i < 50; ){
           maleModel.underwear = ++i;
           maleModel.takePhone();
        }
        //同样,给女模特穿上所有的女装,并进行拍照
        for( var i = 0; i < 50; ){
          femaleModel.underwear = ++i;
          femaleModel.takePhone();
        }
        //可以看到,改进之后的代码,只需要两个对象便完成了同样的功能
     </script>
     
<h1>内部状态与外部状态</h1>

<p>以上的例子便是享元模式的雏形,享元模式要求将对象的属性划分为内部状态与外部状态。</p>

<p>享元模式的目标是尽量减少共享对象的数量,关于如何划分内部状态和外部状态,下面的几条经验提供了一些指引。</p>

<p>1.内部状态存储于对象内部;2.内部状态可以被一些对象共享;3. 内部状态独立于具体的场景,通常不会改变;4.外部场景取决于具体的具体的场景,并且根据场景而变化,外部状态不能被共享。</p>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值