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

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

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

瀏覽:84日期:2023-11-03 14:22:05

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

介紹:之前在做java開(kāi)發(fā)時(shí),數(shù)據(jù)庫(kù)的增刪改查特別頻繁,并且場(chǎng)景不同需要用到的SQL語(yǔ)句頁(yè)都不同,如何用調(diào)用方法的形式來(lái)使用sql語(yǔ)句,拼接sql?這就是這一節(jié)我們要講的解釋器模式。

定義:定義一個(gè)語(yǔ)言的文法,并且建立一個(gè)解釋器來(lái)解釋該語(yǔ)言中的句子,這里的語(yǔ)言是指使用規(guī)定格式和語(yǔ)法的代碼。解釋器模式是一種類(lèi)行為型模式。

場(chǎng)景:我們實(shí)現(xiàn)一個(gè)解釋器,用來(lái)判斷傳遞的數(shù)字是奇數(shù)還是偶數(shù),是正數(shù)還是負(fù)數(shù),是正奇數(shù)還是負(fù)奇數(shù)。

示例:

var TerminalExpression = function(data){ this.data = data; this.interpret = function(context){ if(context === this.data){ return true; } return false; }} var OrExpression = function(exprArr){ this.exprArr = exprArr; this.interpret = function(context){ var isMatch = false; this.exprArr.map(function(item){ if(item.interpret(context)){isMatch = true; } }) return isMatch; }} var AndExpression = function(exprArr){ this.exprArr = exprArr; this.interpret = function(context){ var isMatch = true; this.exprArr.map(function(item){ if(!item.interpret(context)){isMatch = false; } }) return isMatch; }} function getEvenExpression(){ var ExpressionList = []; for(var i = -10; i<100; i++){ if(i % 2 == 0){ ExpressionList.push(new TerminalExpression(i)); } } return new OrExpression(ExpressionList);} function getOddExpression(){ var ExpressionList = []; for(var i = -10; i<100; i++){ if(i % 2 != 0){ ExpressionList.push(new TerminalExpression(i)); } } return new OrExpression(ExpressionList);} function getNegativeOddExpression(){ var ExpressionList = []; for(var i = -10; i<100; i++){ if(i < 0){ ExpressionList.push(new TerminalExpression(i)); } } return new OrExpression(ExpressionList);} var isEven = getEvenExpression();var isOdd = getOddExpression();var isNegative = getNegativeOddExpression();var isNegativeAndOdd = new AndExpression([isNegative,isOdd]); console.log(’2是偶數(shù)嗎? ’ + isEven.interpret(2));//2是偶數(shù)嗎? trueconsole.log(’3是偶數(shù)嗎? ’ + isEven.interpret(3));//3是偶數(shù)嗎? falseconsole.log(’3是奇數(shù)嗎? ’ + isOdd.interpret(3));//3是奇數(shù)嗎? trueconsole.log(’3是負(fù)數(shù)嗎? ’ + isNegative.interpret(3));//3是負(fù)數(shù)嗎? falseconsole.log(’-3是負(fù)數(shù)嗎? ’ + isNegative.interpret(-3));//-3是負(fù)數(shù)嗎? trueconsole.log(’-3是負(fù)奇數(shù)嗎? ’ + isNegativeAndOdd.interpret(-3));//-3是負(fù)奇數(shù)嗎? trueconsole.log(’-4是負(fù)奇數(shù)嗎? ’ + isNegativeAndOdd.interpret(-4));//-4是負(fù)奇數(shù)嗎? falseconsole.log(’3是負(fù)奇數(shù)嗎? ’ + isNegativeAndOdd.interpret(3));//3是負(fù)奇數(shù)嗎? false

上面的例子中TerminalExpression被稱(chēng)為終結(jié)符表達(dá)式類(lèi),封裝底層的判斷條件,一般解釋器模式中只會(huì)存在少數(shù)幾個(gè)終結(jié)符表達(dá)式類(lèi)。OrExpression,AndExpression稱(chēng)為非終結(jié)符表達(dá)式類(lèi),是基于多個(gè)終結(jié)符表達(dá)式組合而成相對(duì)復(fù)雜的邏輯。解釋器模式最核心的就是這兩個(gè)類(lèi),基于他們可以擴(kuò)展組合出豐富多樣的條件。雖然解釋器模式的使用頻率不是特別高,但是它在正則表達(dá)式,xml文檔解釋等領(lǐng)域還是得到了廣泛的應(yīng)用。

解釋器模式總結(jié):

優(yōu)點(diǎn):* 易于擴(kuò)展和修改文法規(guī)則。增加時(shí)只需要增加新的終結(jié)符表達(dá)式,符合開(kāi)關(guān)原則。

缺點(diǎn):* 對(duì)于復(fù)雜文法難以維護(hù),會(huì)充滿(mǎn)非終結(jié)表達(dá)式。* 執(zhí)行效率低,由于使用了大量循環(huán)和遞歸調(diào)用,在解釋復(fù)雜句子時(shí)速度很慢。

適用場(chǎng)景:* 可以將一個(gè)需要解釋執(zhí)行的語(yǔ)言中的句子表示為一個(gè)抽象語(yǔ)法樹(shù)* 一些重復(fù)出現(xiàn)的問(wèn)題可以用一種簡(jiǎn)單的語(yǔ)言來(lái)進(jìn)行表達(dá)* 一個(gè)語(yǔ)言文法較為簡(jiǎn)單* 執(zhí)行效率不是關(guān)鍵問(wèn)題

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

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《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久久,三上悠亚国产精品一区二区三区
色黄视频在线观看| 美女91精品| 国产成人精选| 久久一区二区三区电影| 免费观看在线色综合| 97精品资源在线观看| 精品欠久久久中文字幕加勒比| 另类欧美日韩国产在线| 久久久久久久久久久妇女 | 国产精品一卡| 亚洲一级少妇| 在线一区二区三区视频| 精品视频在线一区二区在线| 欧美日韩激情| 欧美精品三级在线| 91精品国产成人观看| 久久久国产亚洲精品| 亚洲激情黄色| 日本久久一区| 国产女人18毛片水真多18精品| 久久wwww| 欧洲av不卡| 黑丝一区二区三区| 亚洲精品进入| 免费精品一区| 性欧美xxxx免费岛国不卡电影| 丝袜美腿成人在线| 国产伦一区二区三区| 国产一区二区三区四区| 国产一区日韩一区| 亚州av日韩av| 精品国产中文字幕第一页| 久久青草久久| 亚洲图片久久| 欧美国产中文高清| 午夜久久中文| 一区二区亚洲视频| 久久影视三级福利片| 欧美成人日韩| 欧美亚洲三区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产欧美一区二区三区米奇| 午夜久久中文| 亚洲日本免费电影| 日韩在线综合| 国产精品久久久久毛片大屁完整版| 国产视频亚洲| 亚洲精品.com| 国产精品扒开腿做爽爽爽软件| 丝瓜av网站精品一区二区| 福利在线一区| 国产精品网在线观看| 首页国产欧美日韩丝袜| 蜜桃视频在线网站| 国产欧美欧美| 亚洲免费成人av在线| 激情综合自拍| 久久精品欧美一区| 国产一区日韩一区| 国产精品蜜月aⅴ在线| 午夜国产精品视频免费体验区| 国产精选久久| 性色一区二区| 97在线精品| 日韩不卡一区二区三区| 99久久精品网| 国产精品高清一区二区| 午夜一区在线| 国产超碰精品| 你懂的网址国产 欧美| 男人操女人的视频在线观看欧美| 91综合网人人| 国产精品亚洲欧美| 欧美一区=区| 青青久久av| 精品一区视频| 日韩高清电影一区| 国户精品久久久久久久久久久不卡| 日韩高清二区| 日韩一级不卡| 九色porny丨国产首页在线| 91九色综合| 免费在线欧美视频| 婷婷综合在线| 日本免费一区二区三区四区| 久久免费影院| 国产精品久久久久久久久久白浆| 亚洲1区在线观看| 免费的成人av| 亚洲综合婷婷| 日韩国产欧美一区二区三区| 欧美一级全黄| 欧美亚洲三区| 97精品国产99久久久久久免费| 日韩在线网址| 伊人www22综合色| 日韩中出av| 亚洲另类av| 亚洲啊v在线免费视频| 亚洲精品亚洲人成在线观看| 日韩三级视频| 91成人精品在线| 国产美女亚洲精品7777| 日本少妇一区二区| 日本一区二区中文字幕| 国产欧美一区二区三区米奇| 开心激情综合| 国产精品xxx在线观看| 欧美性www| 日韩黄色免费网站| 亚洲一二av| 亚洲综合五月| 亚洲专区视频| 亚洲aⅴ网站| 日本一区二区三区中文字幕| 日韩综合一区二区| 日韩二区三区在线观看| 日韩国产成人精品| 日韩va亚洲va欧美va久久| 日韩欧美中文字幕在线视频| 中文字幕亚洲影视| 日韩激情一区二区| 欧美日韩一视频区二区| 国产精品亚洲综合久久| 久久99影视| 国产激情在线播放| 视频福利一区| 亚洲精品在线观看91| 夜久久久久久| 亚洲日产av中文字幕| 日韩av一区二区在线影视| 国产午夜精品一区在线观看| 国产精品久久久一区二区| 国产精品红桃| 国产成人精品一区二区三区在线| 国产精品精品| 成人精品中文字幕| 999国产精品视频| 亚洲精品麻豆| 日av在线不卡| 久久天堂影院| 男女精品网站| 国产一区二区三区精品在线观看| 精品1区2区3区4区| 国产精品一级| 在线亚洲观看| 精品国产一区二区三区2021| 日韩视频在线一区二区三区| 青青草国产精品亚洲专区无| 中文在线中文资源| 蜜桃av一区二区在线观看| 国产精品一区毛片| 亚洲一级二级| 久久激情五月激情| 欧美日韩水蜜桃| 国产日韩欧美| 国户精品久久久久久久久久久不卡| 日韩福利视频一区| 色综合www| 国产午夜精品一区在线观看| 欧美精品一区二区久久| 天堂成人免费av电影一区| 欧美亚洲一区二区三区| 麻豆精品在线观看| 久久国产日本精品| 婷婷综合福利| 日韩一区亚洲二区| 亚洲精品人人| 日韩av免费大片| 丝袜诱惑制服诱惑色一区在线观看| 久久激情五月婷婷| 久久精品av| 国产一卡不卡| 女主播福利一区| 麻豆国产精品777777在线| 黄色av日韩| 国产福利一区二区精品秒拍| 久久久影院免费| 日韩av网站在线观看| 在线天堂中文资源最新版| 蜜桃视频免费观看一区| www.九色在线| 日本中文字幕视频一区| 日本国产精品| 国产欧美成人| 欧美天堂亚洲电影院在线观看| 国产免费av一区二区三区| 激情综合自拍| 麻豆精品99| 亚洲有吗中文字幕| 午夜精品久久久久久久久久蜜桃| 亚洲精品大片| 香蕉久久99| 久久av偷拍| 午夜在线播放视频欧美| 欧美日韩视频网站| 国产精品va| 欧美日韩夜夜| 亚洲字幕久久| 国产精品三上|