定義:一種語法分析工具,用來分步解釋乙個複雜的運算過程,複雜運算拆分成多個小運算。需求:計算(1+2)*(3+4)的值。
必備元素:
建立直譯器介面,裡面包含乙個解釋操作的方法
public
inte***ce
expression
建立終結符表示式,裡面計算加法
public
class
terminalexpression
implements
expression
@override
public
intinterpret()
}
建立非終結符表示式,裡面計算乘法
public
class
mulexpression
implements
expression
@override
public
intinterpret()
}
建立環境角色,因為計算值不複雜,就直接寫在test中。
public
class
test
}
列印結果:
計算結果為:21
直譯器模式實際使用了遞迴,使用時候需要謹慎。直譯器模式適用於有規律的語句解析,比方手sql語句。
直譯器模式適合一些頻繁出現的運算,比方說例子中的計算。
Java設計模式之直譯器模式
直譯器模式用於描述如何構成乙個簡單的語言直譯器,主要應用於使用物件導向語言開發的直譯器的設計。當需要開發乙個新的語言時可以考慮使用直譯器模式。在某些情況下,為了更好地描述某些特定型別的問題可以建立一種新的語言,這種語言擁有自己的表示式和結構,即文法規則,這些問題的例項將對應為該語言中的句子,此時可以...
Java設計模式筆記之直譯器模式
1.定義 直譯器模式 interpreter 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。2.uml圖 角色介紹 3.通用模式 抽象表示式 public abstract class abstractexpression 3.2 終結表示式 終結符...
JAVA設計模式 直譯器模式
直譯器模式 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。如果乙個特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言的句子。這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。使用 當有乙個語言需要解釋執行...