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

您的位置:首頁技術文章
文章詳情頁

javascript設計模式 ? 解釋器模式原理與用法實例分析

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

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

介紹:之前在做java開發時,數據庫的增刪改查特別頻繁,并且場景不同需要用到的SQL語句頁都不同,如何用調用方法的形式來使用sql語句,拼接sql?這就是這一節我們要講的解釋器模式。

定義:定義一個語言的文法,并且建立一個解釋器來解釋該語言中的句子,這里的語言是指使用規定格式和語法的代碼。解釋器模式是一種類行為型模式。

場景:我們實現一個解釋器,用來判斷傳遞的數字是奇數還是偶數,是正數還是負數,是正奇數還是負奇數。

示例:

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是偶數嗎? ’ + isEven.interpret(2));//2是偶數嗎? trueconsole.log(’3是偶數嗎? ’ + isEven.interpret(3));//3是偶數嗎? falseconsole.log(’3是奇數嗎? ’ + isOdd.interpret(3));//3是奇數嗎? trueconsole.log(’3是負數嗎? ’ + isNegative.interpret(3));//3是負數嗎? falseconsole.log(’-3是負數嗎? ’ + isNegative.interpret(-3));//-3是負數嗎? trueconsole.log(’-3是負奇數嗎? ’ + isNegativeAndOdd.interpret(-3));//-3是負奇數嗎? trueconsole.log(’-4是負奇數嗎? ’ + isNegativeAndOdd.interpret(-4));//-4是負奇數嗎? falseconsole.log(’3是負奇數嗎? ’ + isNegativeAndOdd.interpret(3));//3是負奇數嗎? false

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

解釋器模式總結:

優點:* 易于擴展和修改文法規則。增加時只需要增加新的終結符表達式,符合開關原則。

缺點:* 對于復雜文法難以維護,會充滿非終結表達式。* 執行效率低,由于使用了大量循環和遞歸調用,在解釋復雜句子時速度很慢。

適用場景:* 可以將一個需要解釋執行的語言中的句子表示為一個抽象語法樹* 一些重復出現的問題可以用一種簡單的語言來進行表達* 一個語言文法較為簡單* 執行效率不是關鍵問題

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

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品欧美视频| 国产精品1区| 欧美www视频在线观看| 日本视频在线一区| 中文在线日韩| 久久精品国产www456c0m| 日韩久久精品| 精品捆绑调教一区二区三区| 日韩国产综合| 欧美精品高清| 国产中文字幕一区二区三区| 精品一区二区三区中文字幕视频| 免费日韩成人| 国产一区二区三区精品在线观看| 久久精品女人| 国产a久久精品一区二区三区| 久久这里只有精品一区二区| 国产精品成人一区二区不卡| 97精品国产| 欧美男人天堂| 日韩国产一区二区| 99pao成人国产永久免费视频| 国产一级成人av| 久久婷婷国产| 日韩av片子| 国产成人精品一区二区三区免费| 国产成人精品一区二区三区视频| 日韩国产激情| 欧美在线资源| 免费人成精品欧美精品| 日本亚洲欧美天堂免费| 7777精品| 国产在线不卡一区二区三区| 电影亚洲精品噜噜在线观看| 欧美成人高清| 欧美成人久久| 亚洲一区二区三区四区电影 | 青青草视频一区| 美女精品一区二区| 欧美日韩精品免费观看视欧美高清免费大片| 免费不卡中文字幕在线| 日本黄色精品| 免费久久99精品国产自在现线| 日韩精品1区2区3区| 精品福利久久久| 国产综合婷婷| 国产探花一区二区| 欧美日韩国产观看视频| 最新日韩av| 综合日韩在线| 日韩在线短视频| 国产精品社区| 国产精品tv| 亚洲特色特黄| 日韩在线电影| 久久电影tv| 蜜臀av在线播放一区二区三区| 国产精品乱战久久久| 欧美精选视频一区二区| 一区二区三区网站| 高清一区二区| 亚洲精品一二三**| 国产一区二区三区久久久久久久久| 亚洲精品在线观看91| 一区二区三区四区日韩| 成人国产精品一区二区免费麻豆| 视频一区欧美精品| 精品久久福利| 狠狠色狠狠色综合日日tαg| 国产亚洲欧美日韩精品一区二区三区| 久久婷婷激情| 欧美日韩一区二区三区在线电影| 国产99精品| 国产欧美丝祙| 在线国产一区二区| 97人人精品| 天堂精品久久久久| 欧美久久天堂| 国产精品免费精品自在线观看| 四虎884aa成人精品最新| 日韩欧美久久| 欧美1区免费| 精品一区视频| 日韩精品91亚洲二区在线观看| 国产高清久久| 国产精品精品| 国产日韩亚洲| 亚洲综合不卡| 日韩在线短视频| 国产精品久久久久久久久久久久久久久 | 麻豆一区二区三| 亚洲美洲欧洲综合国产一区| 久久久久久自在自线| 欧美专区一区| 天堂成人免费av电影一区| 亚洲成人va| 首页国产精品| 欧美日韩18| 快she精品国产999| 欧美中文一区二区| 女生影院久久| 精品无人区麻豆乱码久久久| 五月国产精品| 蜜桃视频免费观看一区| 高清一区二区| 亚洲精品动态| 婷婷中文字幕一区| 日韩精品dvd| 国产日韩一区| 亚洲午夜久久| 模特精品在线| 久久久久久久久久久9不雅视频| 国产精品久久久久久模特| 国产精品毛片在线| 红桃视频国产一区| 人人草在线视频| 精品国产欧美| 欧美片网站免费| 国产精品亚洲成在人线| 丝袜国产日韩另类美女| 国产精品一区二区三区av| 中文亚洲免费| 韩国三级一区| 肉色欧美久久久久久久免费看 | 极品av在线| 国产成人免费av一区二区午夜| 亚洲久久视频| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久免费精品| 亚洲精品无播放器在线播放| 一区二区小说| 麻豆国产一区| 欧美精品国产白浆久久久久| 日韩国产欧美在线播放| 鲁大师成人一区二区三区| 99精品99| 国产91在线精品| 香蕉视频亚洲一级| 国精品产品一区| 97国产成人高清在线观看| 久久字幕精品一区| 国产一区2区| 久久精品亚洲| 国产在线观看www| 国产乱码精品一区二区三区四区 | 国产精品宾馆| 国产一区 二区| 精品视频一区二区三区在线观看 | 激情91久久| 亚洲国产一区二区三区在线播放| 久久精品导航| 91精品久久久久久久久久不卡| 成人国产精选| 日韩精品91| 97se综合| 亚洲女同中文字幕| 国产精品美女| 日本va欧美va瓶| 日本精品在线播放| 久久婷婷国产| bbw在线视频| 欧美日韩水蜜桃| 亚洲韩日在线| 亚洲人成网77777色在线播放| 免费观看日韩电影| 日本午夜精品| 国产欧美一区二区三区精品观看| 久久99视频| 色婷婷综合网| 日韩午夜在线| 亚洲色图国产| 免费在线欧美黄色| 国产色播av在线| 日韩国产在线| 男人的天堂久久精品| 亚洲伊人精品酒店| 日韩中文av| 国产一区二区三区四区| 高潮一区二区| 蜜桃av一区二区| 久久亚洲风情| 国产精品一区毛片| 红杏一区二区三区| 亚洲专区欧美专区| 日韩av不卡一区二区| 国产欧美一区二区三区精品酒店| 99精品在线观看| 国产精品一区亚洲| 欧美国产一级| 日韩动漫一区| 福利片在线一区二区| 久久国产精品久久w女人spa| 日韩国产一二三区| 性欧美xxxx免费岛国不卡电影| 久久一二三区| 久久精品一区| 婷婷综合网站| 精品入口麻豆88视频| 亚洲无线一线二线三线区别av| 日本免费一区二区视频|