設計模式之直譯器模式

2021-10-19 13:17:38 字數 1629 閱讀 4121

直譯器模式(interpreter pattern)屬於行為模式,它定義乙個語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的「語言」是指使用規定格式和語法的**。

直譯器模式的四個角色

直譯器模式的注意事項和細節

當有乙個語言需要解釋執行,可將該語言中的句子表示為乙個抽象語法樹,就可以考慮使用直譯器模式,讓程式具有良好的擴充套件性。

應用場景:編譯器、運算表示式計算、正規表示式、機械人等。

使用直譯器可能帶來的問題:直譯器模式會引起類膨脹、直譯器模式採用遞迴呼叫方法,將會導致除錯非常複雜、效率可能降低。

**如下:

抽象表示式(expression)

public inte***ce expression
終結符表示式(terminal expression)

public class constant implements expression 

@override

public int

interpret

(context context)

}

環境(context)角色

public class context 

public int

lookupvalue

(variable x)

}

非終結符表示式

public class variable implements expression 

@override

public int

interpret

(context context)

}

具體實現方法

public class add implements expression

@override

public int

interpret

(context context)

}

public class div implements expression

@override

public int

interpret

(context context)

}

public class mul implements expression 

@override

public int

interpret

(context context)

}

public class sub implements expression 

@override

public int

interpret

(context context)

}

測試方法

public class test 

}

設計模式之直譯器模式

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

設計模式之直譯器模式

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

設計模式之直譯器模式

解析器模式是一種行為型設計模式。其思想是 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,該直譯器使用該表示來解釋語言中的句子。解析器模式涉及4個角色 結構圖 於網路 下面提供乙個簡單例子。乙個簡易的控制台計算器,要求使用者輸入乙個表示式,如a b c,然後要求使用者輸入每個變數的具體值,如...