設計模式之直譯器模式

2021-10-09 20:54:13 字數 1978 閱讀 9908

1.一些重複出現的問題可以用一種簡單的語言來進行表達;

2.乙個簡單語法需要解釋的場景.1.擴充套件性強:在直譯器模式中由於語法是由很多類表示的,當語法規則更改時,只需修改相應的非終結符表示式即可;若擴充套件語法時,只需新增相應非終結符類即可;

2.增加新的解釋表示式的方式;

3.易於實現文法:直譯器模式對應的文法應當是比較簡單且易於實現的,過於複雜的語法並不適合使用直譯器模式1.語法規則較複雜時,會引起類膨脹;

2.執行效率比較低.

public

inte***ce

iarithmeticinterpreter

public

abstract

class

interpreter

implements

iarithmeticinterpreter

}

public

class

numinterpreter

implements

iarithmeticinterpreter

@override

public

intinterpret()

}

public

class

addinterpreter

extends

interpreter

@override

public

intinterpret()

}

public

class

subinterpreter

extends

interpreter

@override

public

intinterpret()

}

public

class

mulinterpreter

extends

interpreter

@override

public

intinterpret()

}

public

class

divinterpreter

extends

interpreter

@override

public

intinterpret()

}

public

class

operationutil

public

static iarithmeticinterpreter getinterpreter

(iarithmeticinterpreter left, iarithmeticinterpreter right, string operation)

elseif(

"-".

equals

(operation)

)elseif(

"*".

equals

(operation)

)elseif(

"/".

equals

(operation)

)else

}}

public

class

mycalculator

//20 + 50

private

void

parse

(string expression)

else}}

public

intcalulate()

}

public

class

test

}

設計模式之直譯器模式

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

設計模式之直譯器模式

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

設計模式之直譯器模式

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