日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript設(shè)計(jì)模式 ? 享元模式原理與用法實(shí)例分析

瀏覽:190日期:2023-11-03 18:41:53

本文實(shí)例講述了javascript設(shè)計(jì)模式 ? 享元模式原理與用法。分享給大家供大家參考,具體如下:

介紹:在我們?nèi)粘i_(kāi)發(fā)中需要?jiǎng)?chuàng)建很多對(duì)象,雖然垃圾回收機(jī)制能幫我們進(jìn)行回收,但是在一些需要重復(fù)創(chuàng)建對(duì)象的場(chǎng)景下,就需要有一種機(jī)制來(lái)進(jìn)行優(yōu)化,提高系統(tǒng)資源的利用率。

享元模式就是解決這類問(wèn)題,主要目的是減少創(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ì)象為例,通過(guò)兩個(gè)例子來(lái)對(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ì)象// 畫(huà)圓: 顏色:red x:10 y:10 radius:10// 創(chuàng)建了一個(gè)對(duì)象// 畫(huà)圓: 顏色:red x:1 y:1 radius:100// 創(chuàng)建了一個(gè)對(duì)象// 畫(huà)圓: 顏色:red x:5 y:5 radius:50// 創(chuàng)建了一個(gè)對(duì)象// 畫(huà)圓: 顏色:blue x:1 y:1 radius:50// 創(chuàng)建了一個(gè)對(duì)象// 畫(huà)圓: 顏色:blue x:12 y:12 radius:50// 創(chuàng)建了一個(gè)對(duì)象// 畫(huà)圓: 顏色:blue x:2 y:12 radius:20

這種情況下每次使用都需要實(shí)例化一次Circle對(duì)象,對(duì)系統(tǒng)資源來(lái)說(shuō)是一種浪費(fèi)。

觀察下不難發(fā)現(xiàn),除了第一次需要實(shí)例化,其余的可以基于實(shí)例繼續(xù)修改。

我們修改下:

var Circle = function(color){ console.log(’創(chuàng)建了一個(gè)對(duì)象’); this.color = color; this.x; this.y; this.radius; this.setAttr = function(x, y, radius){ this.x = x; this.y = y; this.radius = radius; } this.draw = function(){ console.log(’畫(huà)圓: 顏色:’ + this.color + ’ x:’ + this.x + ’ y:’ + this.y + ’ radius:’ + this.radius) }} var ShapeFactory = function(){ this.circleMap = {}; this.getCircle = function(color){ var circle = this.circleMap[color]; if(!circle){ circle = new Circle(color); this.circleMap[color] = circle; } return circle; }}var factory = new ShapeFactory(); var redCricle = factory.getCircle(’red’);redCricle.setAttr(10,10,10);redCricle.draw(); var redCricle1 = factory.getCircle(’red’);redCricle1.setAttr(1,1,100);redCricle1.draw(); var redCricle2 = factory.getCircle(’red’);redCricle2.setAttr(5,5,50);redCricle2.draw(); var blueCricle = factory.getCircle(’blue’); blueCricle.setAttr(1,1,50);blueCricle.draw(); var blueCricle1 = factory.getCircle(’blue’);blueCricle1.setAttr(12,12,50);blueCricle1.draw(); var blueCricle2 = factory.getCircle(’blue’);blueCricle2.setAttr(2,12,20);blueCricle2.draw(); // 創(chuàng)建了一個(gè)對(duì)象// 畫(huà)圓: 顏色:red x:10 y:10 radius:10// 畫(huà)圓: 顏色:red x:1 y:1 radius:100// 畫(huà)圓: 顏色:red x:5 y:5 radius:50// 創(chuàng)建了一個(gè)對(duì)象// 畫(huà)圓: 顏色:blue x:1 y:1 radius:50// 畫(huà)圓: 顏色:blue x:12 y:12 radius:50// 畫(huà)圓: 顏色:blue x:2 y:12 radius:20

我們通過(guò)一個(gè)工廠來(lái)動(dòng)態(tài)創(chuàng)建Circle對(duì)象,將實(shí)例進(jìn)行保存,保存的位置稱之為享元池。第二次創(chuàng)建時(shí),直接使用已有的結(jié)果。節(jié)約了系統(tǒng)資源

享元模式總結(jié):

優(yōu)點(diǎn):* 大大減少對(duì)象的創(chuàng)建,降低系統(tǒng)內(nèi)存使用,使效率提高。* 享元模式外部狀態(tài)獨(dú)立,不會(huì)影響其內(nèi)部狀態(tài),使得享元對(duì)象可以在不同環(huán)境被共享。

缺點(diǎn):* 提高了系統(tǒng)復(fù)雜度,且需要相同的屬性,否則會(huì)造成系統(tǒng)混亂

適用場(chǎng)景:* 一個(gè)系統(tǒng)有大量相同或相似的對(duì)象,造成內(nèi)存大量耗費(fèi)。* 對(duì)象大部分狀態(tài)都可以外部化* 在使用享元模式時(shí)需要維護(hù)一個(gè)存儲(chǔ)享元對(duì)象的享元池,而這需要耗費(fèi)一定的系統(tǒng)資源。因此使用時(shí)要衡量。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
最新日韩av| 婷婷激情综合| 玖玖玖国产精品| 亚洲三级欧美| 深夜福利视频一区二区| 久久免费福利| 国产精品99在线观看| 美女av在线免费看| av资源亚洲| 亚洲午夜av| 国产亚洲福利| 日韩午夜精品| 一区二区电影| 欧美亚洲三级| 精品视频一二| 日本欧美不卡| 伊人久久婷婷| 亚洲日产av中文字幕| 亚洲精品四区| 国产精品天堂蜜av在线播放| 免费看久久久| 国产精品福利在线观看播放| 国产欧美一区二区三区精品酒店| 极品av在线| 午夜久久福利| 日本不卡视频在线观看| 日本精品另类| 精品成av人一区二区三区 | 92国产精品| 久久精品国产68国产精品亚洲| 精品国产乱码久久久| 在线一区av| 亚洲一区久久| 欧美日韩91| 91一区二区| 欧美日韩国产免费观看视频| 久久亚洲风情| 国产精品jk白丝蜜臀av小说| 国产激情在线播放| 日韩欧美不卡| 丝袜美腿成人在线| 国产劲爆久久| 不卡中文字幕| 国产香蕉精品| 久久国产免费| 日韩精品中文字幕吗一区二区| 麻豆精品在线播放| 激情婷婷亚洲| 国产欧美自拍| 激情综合自拍| 欧美日韩一区二区三区四区在线观看 | 亚洲另类av| 中国女人久久久| 日韩av网站免费在线| 成人午夜亚洲| 免费久久精品视频| 久久尤物视频| 国产精品美女| 国产成人精品999在线观看| 亚洲欧洲一区| 美女尤物国产一区| 九九久久电影| 精品午夜视频| 中文字幕乱码亚洲无线精品一区| 国内在线观看一区二区三区| 久久香蕉精品| 人在线成免费视频| 日韩精品免费视频人成 | 麻豆国产欧美一区二区三区 | 伊人影院久久| 国产一区二区三区不卡av| 男人的天堂亚洲一区| 高清一区二区三区| 首页国产欧美久久| 日韩在线短视频| 欧美亚洲一级| 视频在线在亚洲| 999国产精品永久免费视频app| 中文字幕av一区二区三区四区| 日韩高清电影一区| 亚洲人成精品久久久| 日韩欧美一区二区三区在线视频| 在线精品观看| 久久久久99| 国产伦理久久久久久妇女| 国产农村妇女精品一二区| 丰满少妇一区| 日韩精选在线| 婷婷综合网站| 日本不良网站在线观看| 国产亚洲欧美日韩精品一区二区三区| 久久久久久黄| 精品国产麻豆| 欧美一区激情| 久久av一区二区三区| 日本久久成人网| 欧美激情视频一区二区三区免费| 国产亚洲午夜| 久久久五月天| av在线最新| 精品一区二区三区四区五区| 日本免费在线视频不卡一不卡二| 欧美亚洲精品在线| 国产精品v日韩精品v欧美精品网站| 国产精品外国| 欧美日韩一区二区三区视频播放| 美女免费视频一区| 亚洲一区二区三区四区五区午夜 | 国产欧美另类| 亚州精品视频| 亚洲午夜电影| 欧洲av不卡| 国产成人精品福利| 国产精成人品2018| 国产精品免费99久久久| 日韩精品三区四区| 亚洲一区二区小说| 香蕉精品视频在线观看| 欧美一区久久久| 麻豆免费精品视频| 国产精品亚洲综合久久| 日韩av资源网| 日韩三级精品| 亚洲影视一区| 免费人成精品欧美精品| 亚洲高清影视| 天堂资源在线亚洲| 亚洲高清不卡| 亚洲成人二区| 99久久精品费精品国产| 婷婷激情一区| 国产综合激情| 欧美二区视频| 五月婷婷亚洲| 老鸭窝毛片一区二区三区| 国产免费成人| 中文字幕一区二区三区在线视频| 99pao成人国产永久免费视频 | 香蕉久久精品| 欧美日韩第一| 亚洲欧美日韩一区在线观看| 婷婷成人基地| 蜜桃久久久久久| 日韩国产一二三区| 国产欧美日韩在线观看视频| 国产另类在线| 精品国产一级| 色吊丝一区二区| 婷婷精品进入| 亚洲精品美女| 日韩精品a在线观看91| 日韩动漫一区| 精品资源在线| 欧美日韩尤物久久| 免费视频国产一区| 狠狠爱www人成狠狠爱综合网| 久久成人国产| 日韩精品欧美成人高清一区二区| 久久国产尿小便嘘嘘| 久久精品午夜| 亚洲欧美综合| 三级久久三级久久久| 国产精品色在线网站| 久久精品天堂| 欧美福利一区| 免费在线观看日韩欧美| 日韩国产精品久久久久久亚洲| 国产精品香蕉| 久久人人97超碰国产公开结果| 亚洲一区二区成人| 欧美日韩午夜电影网| 黄色网一区二区| 欧美精品自拍| 欧美自拍一区| 日韩精品dvd| 国产精品三上| 国产精品66| 欧美日韩精品一区二区视频| 快she精品国产999| 国产精品丝袜在线播放| 福利一区在线| 先锋影音国产一区| 欧美国产免费| 伊人久久亚洲美女图片| 国产三级一区| 激情欧美国产欧美| 日韩国产高清在线| 中文字幕高清在线播放| 免费视频久久| 精品久久亚洲| 三级一区在线视频先锋| 欧美日韩一区二区国产| 一本大道色婷婷在线| 中文字幕一区二区三区四区久久| 欧美a在线观看| 免费黄色成人| 国产精品久久久久久久久免费高清 | 久久蜜桃av| 日韩黄色在线观看| 婷婷综合六月|