软件架构设计——解释器模式
首先? 我們需要理解一點:什么是架構模式呢?
架構模式是一個通用的、可重用的解決方案,用于在給定上下文中的軟件體系結構中經常出現的問題。架構模式與軟件設計模式類似,但具有更廣泛的范圍。
那么 什么是解釋器模式呢?
這個模式用于設計一個解釋用專用語言編寫的程序的組件。它主要指定如何評估程序的行數,即以特定的語言編寫的句子或表達式。其基本思想是為每種語言的符號都有一個分類。
?一、 模式定義
???????所謂解釋器模式就是定義語言的文法,并且建立一個解釋器來解釋該語言中的句子。
什么?不明白?
說的簡單點,就是:給定一個語言,然后定義它的文法,并定義一個解釋器,該解釋器用該文法來解釋語言中的句子。
在這里 ,如果你學過軟件構造相關只是的話,相信已經理解了個七七八八。
二、使用場景
如果一種特定類型的問題發生的頻率足夠高,那么可能就值得將該問題的各個實例表述為一個簡單語言中的句子.這樣就可以構建一個解釋器,該解釋器通過解釋這些句子來解決該問題.
舉個例子:
數據庫查詢語言中的SQL語句。你只需要輸入相應select語句,解釋器便會分析SQL語句的文法,識別你想要找到的數據元素并把它提取出來。
?
????解釋器模式主要包含如下幾個角色:
??????????AbstractExpression:?抽象表達式。聲明一個抽象的解釋操作,該接口為抽象語法樹中所有的節點共享。
??????????TerminalExpression:?終結符表達式。實現與文法中的終結符相關的解釋操作。實現抽象表達式中所要求的方法。文法中每一個終結符都有一個具體的終結表達式與之相對應。
??????????NonterminalExpression:?非終結符表達式。為文法中的非終結符相關的解釋操作。
??????????Context:?環境類。包含解釋器之外的一些全局信息。
??????????Client:?客戶類
優點: 1、 可擴展性比較好,靈活。 ?2、 增加了新的解釋表達式的方式 ?3、 易于實現簡單文法。
缺點: 可利用場景比較少 ? 2、 對于復雜的文法比較難維護。3、解釋器模式會引起類膨脹 4、解釋器模式采用遞歸調用方法
使用場景:1、可以將一個需要解釋執行的語言中的句子表示為一個抽象語法樹 2、一些重復出現的問題可以用一種簡單的語言來進行表達 3、一個簡單語法需要解釋的場景?
三、模式總結:
???1、在解釋器模式中由于語法是由很多類表示的,所以可擴展性強。
???2、雖然解釋器的可擴展性強,但是如果語法規則的數目太大的時候,該模式可能就會變得異常復雜。所以解釋器模式適用于文法較為簡單的。
???3、解釋器模式可以處理腳本語言和編程語言。常用于解決某一特定類型的問題頻繁發生情況。
?
PS:本次博客是LZ吸收多位博主分享的經驗總結而成? 侵刪。
轉載于:https://www.cnblogs.com/du1269038969/p/9069004.html
總結
以上是生活随笔為你收集整理的软件架构设计——解释器模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSH管理多密钥
- 下一篇: 分布式数据库管理系统