日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式:解释器模式(Interpreter)

發(fā)布時間:2024/4/11 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式:解释器模式(Interpreter) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。


歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/design_pattern/interceptor/

給定一個語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。

解釋器模式的角色:

  • 抽象表達式角色(AbstractExpression):聲明一個所有的具體表達式角色都需要實現(xiàn)的抽象接口。這個接口主要是一個interpret()方法,稱作解釋操作。
  • 終結(jié)符表達式角色(Terminal Expression):實現(xiàn)了抽象表達式角色所需求的接口,主要是一個interpret()方法;文法中的每一個終結(jié)符都有一個具體終結(jié)表達式與之相對應(yīng)。比如有一個簡單的公式:R=R1+R2,在里面R1和R2就是終結(jié)符,對應(yīng)的解析R1和R2的解釋器就是終結(jié)符表達式。
  • 非終結(jié)符表達式角色(Nonterminal Expression):文法中的每一條規(guī)則都需要一個具體的非終結(jié)符表達式,非終結(jié)符表達式一般是文法中的運算符或者其他關(guān)鍵字。比如R=R1+R2中的“+”就是非終結(jié)符,解析“+”的解釋器就是一個非終結(jié)符表達式。
  • 環(huán)境角色(Context):這個角色的任務(wù)一般是用來存放文法中各個終結(jié)符所對應(yīng)的具體值。比如R=R1+R2,我們給R1賦值100,給R2賦值200。這些信息需要存放到環(huán)境角色中,很多情況下我們使用Map來充當(dāng)環(huán)境角色就足夠了。
  • 這個模式確實用的不多,關(guān)于案例介紹可以翻看一下資料3.

    優(yōu)缺點
    優(yōu)點:

  • 解釋器是一個簡單語法分析工具,它最顯著的優(yōu)點是擴展性,修改語法規(guī)則只要修改相應(yīng)的非終結(jié)符表達式就可以了,若擴展語法,則只要增加非終結(jié)符類就可以了。
  • 缺點:

  • 解釋器模式會引起類膨脹,每個語法都要產(chǎn)生一個非終結(jié)符表達式,語法規(guī)則比較復(fù)雜時,可能產(chǎn)生a大量的類文件,難以維護。
  • 解釋器模式采用遞歸調(diào)用方法,它導(dǎo)致調(diào)試非常復(fù)雜。
  • 解釋器由于使用了大量的循環(huán)和遞歸,所以當(dāng)用于解析復(fù)雜、冗長的語法時,效率是難以忍受的。
  • TIPS: 盡量不要在重要模塊中使用解釋器模式,因為難以維護。在項目中,可以使用shell, python等腳本語言來代替解釋器模式。

    JDK中的解釋器模式:
    java.util.Pattern
    java.text.Normalizer
    java.text.Format


    參考資料

  • 《23種設(shè)計模式》
  • 《細數(shù)JDK里的設(shè)計模式》
  • 《《JAVA與模式》之解釋器模式》
  • 歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/design_pattern/interceptor/

    歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。


    超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生

    總結(jié)

    以上是生活随笔為你收集整理的设计模式:解释器模式(Interpreter)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。