<script> var Model = function( sex ){ this.sex = sex; }; Model.PRototype.takePhone = function(){ console.log( "sex = " + this.sex + " " + "underwear = " + this.underwear ); }; //分別創(chuàng)建一個(gè)男模特和一個(gè)女模特 var maleModel = new Model( "male" ); var femaleModel = new Model( "female" ); //給男模特依次穿上所有的男裝,并進(jìn)行拍照 for( var i = 0; i < 50; ){ maleModel.underwear = ++i; maleModel.takePhone(); } //同樣,給女模特穿上所有的女裝,并進(jìn)行拍照 for( var i = 0; i < 50; ){ femaleModel.underwear = ++i; femaleModel.takePhone(); } //可以看到,改進(jìn)之后的代碼,只需要兩個(gè)對(duì)象便完成了同樣的功能 </script><h1>內(nèi)部狀態(tài)與外部狀態(tài)</h1><p>以上的例子便是享元模式的雛形,享元模式要求將對(duì)象的屬性劃分為內(nèi)部狀態(tài)與外部狀態(tài)。</p><p>享元模式的目標(biāo)是盡量減少共享對(duì)象的數(shù)量,關(guān)于如何劃分內(nèi)部狀態(tài)和外部狀態(tài),下面的幾條經(jīng)驗(yàn)提供了一些指引。</p><p>1.內(nèi)部狀態(tài)存儲(chǔ)于對(duì)象內(nèi)部;2.內(nèi)部狀態(tài)可以被一些對(duì)象共享;3. 內(nèi)部狀態(tài)獨(dú)立于具體的場(chǎng)景,通常不會(huì)改變;4.外部場(chǎng)景取決于具體的具體的場(chǎng)景,并且根據(jù)場(chǎng)景而變化,外部狀態(tài)不能被共享。</p>
新聞熱點(diǎn)
疑難解答
圖片精選