中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

wordpress tag 收錄肇慶seo按天收費(fèi)

wordpress tag 收錄,肇慶seo按天收費(fèi),設(shè)計(jì)站,微網(wǎng)站建設(shè)公司首選相關(guān)文章:技術(shù)成神之路:二十三種設(shè)計(jì)模式(導(dǎo)航頁) 介紹 解釋器模式(Interpreter Pattern)是一種行為設(shè)計(jì)模式,用于定義一種語言的文法表示,并提供一個(gè)解釋器來處理這種文法。它用于處理具有特定語法或表達(dá)…

在這里插入圖片描述
相關(guān)文章:技術(shù)成神之路:二十三種設(shè)計(jì)模式(導(dǎo)航頁)

介紹

解釋器模式(Interpreter Pattern)是一種行為設(shè)計(jì)模式,用于定義一種語言的文法表示,并提供一個(gè)解釋器來處理這種文法。它用于處理具有特定語法或表達(dá)式的場(chǎng)景。

1. 定義


解釋器模式定義了一種語言的文法表示,并定義一個(gè)解釋器用來解釋語言中的句子。

2. 主要作用


  • 提供一種方式來評(píng)估語言的文法或表達(dá)式:解釋器模式允許系統(tǒng)解析和執(zhí)行由文法定義的語言。
  • 簡(jiǎn)化對(duì)復(fù)雜表達(dá)式的處理:通過將復(fù)雜的表達(dá)式分解為簡(jiǎn)單的表達(dá)式,可以降低處理的復(fù)雜性。
  • 易于擴(kuò)展:新的語法可以通過添加新的終結(jié)符或非終結(jié)符類輕松擴(kuò)展。

3. 解決的問題


  • 處理和解析特定語言或表達(dá)式的需求。
  • 提供一種清晰的方式來定義文法及其解釋。
  • 使得對(duì)文法和表達(dá)式的擴(kuò)展變得簡(jiǎn)單明了。

4. 模式原理


包含角色:

  1. 抽象表達(dá)式(Expression): 一個(gè)接口或抽象類,定義了解釋方法(interpret())。所有具體表達(dá)式都要實(shí)現(xiàn)這個(gè)接口。
  2. 終結(jié)符表達(dá)式(TerminalExpression): 具體的表達(dá)式類,代表語法中的終結(jié)符。在解釋器中,這些類通常與輸入的基本元素對(duì)應(yīng),如某個(gè)具體的字符或詞匯。
  3. 非終結(jié)符表達(dá)式(NonterminalExpression): 這也是一個(gè)具體的表達(dá)式類,用于解釋由多個(gè)表達(dá)式組成的復(fù)雜表達(dá)式。它通常用于構(gòu)造更復(fù)雜的語法結(jié)構(gòu),并實(shí)現(xiàn)解釋方法。
  4. 上下文(Context): 上下文對(duì)象用于存儲(chǔ)解釋器的狀態(tài)信息,包括輸入字符串和其他相關(guān)數(shù)據(jù)。它在解析過程中提供必要的上下文信息給各個(gè)表達(dá)式。

UML類圖:
在這里插入圖片描述
示例代碼:

// 抽象表達(dá)式
interface Expression {int interpret();
}// 終結(jié)符表達(dá)式:數(shù)字
class Number implements Expression {private int number;public Number(int number) {this.number = number;}@Overridepublic int interpret() {return number;}
}// 非終結(jié)符表達(dá)式:加法
class Add implements Expression {private Expression leftExpression;private Expression rightExpression;public Add(Expression left, Expression right) {this.leftExpression = left;this.rightExpression = right;}@Overridepublic int interpret() {return leftExpression.interpret() + rightExpression.interpret();}
}// 非終結(jié)符表達(dá)式:減法
class Subtract implements Expression {private Expression leftExpression;private Expression rightExpression;public Subtract(Expression left, Expression right) {this.leftExpression = left;this.rightExpression = right;}@Overridepublic int interpret() {return leftExpression.interpret() - rightExpression.interpret();}
}

調(diào)用:

public class InterpreterDemo {public static void main(String[] args) {// 表達(dá)式:3 + 5Expression three = new Number(3);Expression five = new Number(5);Expression add = new Add(three, five);System.out.println("Result: " + add.interpret());  // 輸出: Result: 8// 表達(dá)式:10 - 2Expression ten = new Number(10);Expression two = new Number(2);Expression subtract = new Subtract(ten, two);System.out.println("Result: " + subtract.interpret());  // 輸出: Result: 8}
}

emm…這個(gè)模式才是冷門中的冷門,由于只能在特定領(lǐng)域使用,讓我們動(dòng)手寫的情況很少,一般只是在源碼中會(huì)見到,下面就舉幾個(gè)源碼中的例子吧,加深下印象:

1. Java 正則表達(dá)式
正則大家都用過吧,可以把一些特定的字符 通過正則轉(zhuǎn)化為我們預(yù)期的效果,在正則表達(dá)式中 Pattern類負(fù)責(zé)解析正則表達(dá)式的語法,而Matcher類則用于執(zhí)行該模式的匹配。

2. Android 自定義 View 的屬性解析
自定義視圖會(huì)解析 XML 中定義的屬性,在自定義視圖的構(gòu)造函數(shù)中,通過AttributeSet來解析XML中定義的屬性,類似于解釋器的功能。

3. DSL (領(lǐng)域特定語言) 解析
DSL 正如其名,在特定領(lǐng)域下的語言,這個(gè)語言可以由你自己定制,常見的在Kotlin中 有很多語法糖 都運(yùn)用了DSL,在一些指定場(chǎng)景下很實(shí)用,在Android開發(fā)中,Gradle構(gòu)建腳本使用一種基于Groovy的DSL來定義構(gòu)建配置,Gradle解析器使用了解釋器模式。

這個(gè)模式,不要求一定要掌握,但要見到認(rèn)識(shí),給面試官能吹nb就行了😎。

5. 優(yōu)缺點(diǎn)


優(yōu)點(diǎn):

  • 易于改變和擴(kuò)展文法。
  • 容易實(shí)現(xiàn)簡(jiǎn)單的語言解釋器。

缺點(diǎn):

  • 對(duì)復(fù)雜的文法不太適用,類數(shù)目會(huì)增加。
  • 解釋器模式會(huì)引起性能問題。

6. 應(yīng)用場(chǎng)景


  • 解析特定的語言或格式(例如:數(shù)學(xué)表達(dá)式、SQL查詢、正則表達(dá)式)。
  • 定義簡(jiǎn)單的文法規(guī)則并提供語法分析功能。
  • 在領(lǐng)域特定語言(DSL)中,提供一種簡(jiǎn)單的語法解析方式。

7. 總結(jié)


解釋器模式適用于簡(jiǎn)單的語法解析和解釋場(chǎng)景,但不適合復(fù)雜的語法結(jié)構(gòu)。它通過類和對(duì)象的組合,靈活定義和擴(kuò)展語法結(jié)構(gòu)。

至此,23種設(shè)計(jì)模式告一段落

http://www.risenshineclean.com/news/30114.html

相關(guān)文章:

  • 衡水企業(yè)做網(wǎng)站多少錢使用百度地圖導(dǎo)航收費(fèi)嗎
  • 長(zhǎng)沙銘萬做網(wǎng)站上海網(wǎng)站快速排名優(yōu)化
  • 服裝廠網(wǎng)站模板營銷策劃公司名稱
  • 網(wǎng)站公安備案多久審核app推廣兼職是詐騙嗎
  • 廣州互聯(lián)網(wǎng)項(xiàng)目工作室seo外包公司怎么樣
  • h5網(wǎng)站建設(shè)的具體內(nèi)容企業(yè)營銷網(wǎng)站
  • 上海網(wǎng)站建設(shè)管理推廣的渠道和方法有哪些
  • 鄭州建設(shè)企業(yè)網(wǎng)站百度一下 你就知道官方
  • ??谄髽I(yè)網(wǎng)站建設(shè)愛站網(wǎng)關(guān)鍵詞挖掘查詢工具
  • p2p網(wǎng)站開發(fā)的多少錢一個(gè)產(chǎn)品的網(wǎng)絡(luò)營銷方案
  • 大氣集團(tuán)網(wǎng)站源碼科學(xué)新概念seo外鏈平臺(tái)
  • 網(wǎng)站建設(shè)圖文百度網(wǎng)頁網(wǎng)址
  • 做網(wǎng)站購買服務(wù)器國外常用的seo站長(zhǎng)工具
  • 企業(yè)網(wǎng)站建設(shè) 西寧公司網(wǎng)站域名續(xù)費(fèi)一年多少錢
  • 外貿(mào)免費(fèi)開發(fā)網(wǎng)站建設(shè)網(wǎng)絡(luò)廣告營銷方案策劃內(nèi)容
  • 佛山建站專寧波抖音seo搜索優(yōu)化軟件
  • 日文設(shè)計(jì)網(wǎng)站自動(dòng)點(diǎn)擊器下載
  • 海南??诰W(wǎng)站開發(fā)公司怎么進(jìn)行網(wǎng)站推廣
  • 響應(yīng)式布局網(wǎng)頁seo入門教程視頻
  • 廈門市建設(shè)局網(wǎng)站住房保障2018怎么制作自己的網(wǎng)站
  • 網(wǎng)絡(luò)廣告設(shè)計(jì)案例網(wǎng)站關(guān)鍵詞排名優(yōu)化方法
  • 網(wǎng)站建設(shè)cach目錄營銷策劃培訓(xùn)
  • 自己放題庫做測(cè)試網(wǎng)站網(wǎng)絡(luò)營銷產(chǎn)品的首選產(chǎn)品
  • 好的網(wǎng)站和網(wǎng)頁有哪些在線培訓(xùn)網(wǎng)站次要關(guān)鍵詞
  • 無錫h5網(wǎng)站建設(shè)廣州高端網(wǎng)站建設(shè)公司
  • 自己怎么做網(wǎng)站優(yōu)化市場(chǎng)調(diào)研怎么寫
  • 怎樣才能做好網(wǎng)絡(luò)推廣優(yōu)化大師怎么下載
  • 免費(fèi)網(wǎng)站建設(shè)哪個(gè)好百度app下載官方免費(fèi)最新版
  • 網(wǎng)站模板如何制作武漢網(wǎng)站競(jìng)價(jià)推廣
  • 公司做網(wǎng)站的 oa辦公系統(tǒng)seo搜索引擎