設計模式學習總結(22) 解釋器模式

本系列主要記錄設計模式的意圖是什麼,它要解決一個什麼問題,什麼時候可以使用它;它是如何解決的,掌握它的結構圖,記住它的關鍵代碼;能夠想到至少兩個它的應用實例,一個生活中的,一個軟件中的;這個模式的優缺點是什麼,其有哪些使用場景,在使用時要注意什麼。

尊重作者,轉載請註明曄陽的Bloghttp://blog.csdn.net/hacke2


22.解釋器模式

意圖:給定一個語言, 定義它的文法表示, 並定 義一個解釋器, 這個解釋器使用該標識來解釋語言中的句子。
主要解決:對於一些固定文法構建一個解釋句子的解釋器
什麼時候使用:如果一種特定類型的問題發生的頻率足夠高,那麼可能就值得將該問題的各個實例表述爲一個簡單語言中的句子.這樣就可以構建一個解釋器,該解釋器通過解釋這些句子來解決該問題.
如何解決 :構件語法樹,定義終結符與非終結符
結構圖


關鍵代碼:構件環境類,包含解釋器之外的一些全局信息,一般是HashMap
應用實例:編譯器、運算表達式計算
優點: 1、 可擴展性比較好,靈活。  2、 增加了新的解釋表達式的方式  3、 易於實現簡單文法。
缺點: 可利用場景比較少   2、 對於複雜的文法比較難維護。3、解釋器模式會引起類膨脹 4、解釋器模式採用遞歸調用方法
使用場景
1、可以將一個需要解釋執行的語言中的句子表示爲一個抽象語法樹 2、一些重複出現的問題可以用一種簡單的語言來進行表達 3、一個簡單語法需要解釋的場景
注意事項:可利用場景比較少,JAVA中如果碰到可以用expression4J代替
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章