這篇文章主要講解了如何使用javascript中的享元模式,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。
目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、江陽(yáng)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。介紹:在我們?nèi)粘i_發(fā)中需要?jiǎng)?chuàng)建很多對(duì)象,雖然垃圾回收機(jī)制能幫我們進(jìn)行回收,但是在一些需要重復(fù)創(chuàng)建對(duì)象的場(chǎng)景下,就需要有一種機(jī)制來進(jìn)行優(yōu)化,提高系統(tǒng)資源的利用率。
享元模式就是解決這類問題,主要目的是減少創(chuàng)建對(duì)象的數(shù)量。享元模式提倡重用現(xiàn)有同類對(duì)象,如未找到匹配的對(duì)象則創(chuàng)建新對(duì)象
定義:運(yùn)用共享技術(shù)有效的支持大量細(xì)粒度對(duì)象的復(fù)用。系統(tǒng)只適用少量的對(duì)象,而這些對(duì)象都很相似,狀態(tài)變化很小,可以實(shí)現(xiàn)對(duì)象的多次復(fù)用。由于享元模式要求能夠共享的對(duì)象必須是細(xì)粒度的對(duì)象,因此他又稱為輕量級(jí)模式,是一種對(duì)象結(jié)構(gòu)型模式。
場(chǎng)景:我們以創(chuàng)建圓形對(duì)象為例,通過兩個(gè)例子來對(duì)比享元模式的效果。
示例:
var redCricle = new Circle('red'); redCricle.setAttr(10,10,10); redCricle.draw(); var redCricle1 = new Circle('red'); redCricle1.setAttr(1,1,100); redCricle1.draw(); var redCricle2 = new Circle('red'); redCricle2.setAttr(5,5,50); redCricle2.draw(); var blueCricle = new Circle('blue'); blueCricle.setAttr(1,1,50); blueCricle.draw(); var blueCricle1 = new Circle('blue'); blueCricle1.setAttr(12,12,50); blueCricle1.draw(); var blueCricle2 = new Circle('blue'); blueCricle2.setAttr(2,12,20); blueCricle2.draw(); // 創(chuàng)建了一個(gè)對(duì)象 // 畫圓: 顏色:red x:10 y:10 radius:10 // 創(chuàng)建了一個(gè)對(duì)象 // 畫圓: 顏色:red x:1 y:1 radius:100 // 創(chuàng)建了一個(gè)對(duì)象 // 畫圓: 顏色:red x:5 y:5 radius:50 // 創(chuàng)建了一個(gè)對(duì)象 // 畫圓: 顏色:blue x:1 y:1 radius:50 // 創(chuàng)建了一個(gè)對(duì)象 // 畫圓: 顏色:blue x:12 y:12 radius:50 // 創(chuàng)建了一個(gè)對(duì)象 // 畫圓: 顏色:blue x:2 y:12 radius:20