設計模式之23 直譯器模式

2021-07-22 17:53:08 字數 801 閱讀 4593

直譯器模式(interpreter)的目的就是使用乙個直譯器為使用者提供一門定義語言的語法表示的直譯器。然後通過直譯器來解釋語言中的句子。

uml圖如下所示:

這種模式實現了乙個表示式介面,該介面解釋乙個特定的上下文。通常被用在sql解析,符號處理引擎等。

角色:

1)抽象直譯器(abstractexpression):具體的解釋任務由各個實現類完成。

2)終結符表示式(terminalexpression):實現與文法中的元素相關聯的解釋操作,通常乙個直譯器模式中只有一

終結符表示式,但有多個例項,對應不同的終結符。

3)非終結符表示式(nonterminalexpression):文法中的每條規則對應於乙個非終結表示式,非終結表示式根據邏

輯的複雜程度的增加而增加,原則上每個文法都對應乙個非終結表示式。

4)環境角色(context):上下文環境類。

直譯器模式的優缺點:

優點:它是乙個簡單的語法分析工具,顯著優點是擴充套件性,修改語法規則只要修改相應的非終結表示式即可,若擴充套件語法,則只要增加非終結符類就可以了。

缺點:①會引起類膨脹;②採用遞迴呼叫,導致除錯複雜;③**效率的問題。

直譯器模式在實際的系統開發中使用的非常少,因為它會引起效率、效能以及維護問題。

23種設計模式(14) 直譯器模式

在銀行 類專案中,經常會有一些模型運算,通過對現有資料的統計 分析而 不可知或未來可能發生的商業行為。模型運算大部分是針對海量資料的,例如建立乙個模型公式,分析乙個城市的消費傾向,進而影響銀行的營銷和業務擴張方向,一般的模型運算都有乙個或多個運算公式,通常是加減乘除四則運算,偶爾也有指數 開方等複雜...

設計模式之直譯器模式

直譯器模式是一種類行為型模式,它主要是用來解釋特定語言的特定文法表示,雖然這個在實際生產中不常用到,但是我們學習一下還是有幫助的。定義 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。使用場景 當有乙個語言需要解釋執行,並且你可將該語言中的句子表示為乙...

設計模式之直譯器模式

直譯器模式 1.直譯器模式 給定乙個語言,定義它文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。比如 在字串中...