<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>
新闻热点
疑难解答