JAVA設計模式 直譯器模式

2021-08-25 06:03:08 字數 1363 閱讀 8799

直譯器模式:給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。

如果乙個特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言的句子。這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。

使用:當有乙個語言需要解釋執行,並且可將該語言中的句子表示為乙個抽象語法樹時,可使用直譯器模式。

缺點:直譯器模式為文法中的每一條規則至少定義了乙個類,因此包含許多規則的文法可能難以管理和維護。建議當文法非常複雜時,使用其它的技術如語法分析程式或編譯器生成器來處理。

乙個抽象類,實現類做相應功能,乙個功能有乙個具體實現類

/**

* 抽象直譯器,表示數**算

*/public

abstract

class

yunsuan

/**

* 加法直譯器

*/public

class

addition

extends

operator

@override

public

intinterpret()

}

/**

* 對數字進行解釋

*/public

class

numextends

yunsuan

@override

public

intinterpret()

}

/**

* 運算子直譯器

*/public

abstract

class

operator

extends

yunsuan

}

/**

* 處理業務邏輯

*/public

class

calculator }}

public

intcalculate()

}

/**

* 不使用堆

*/public

class

calculatornew }}

public

intcalculate()

}

public

class main

}

Java學習 設計模式 直譯器模式

直譯器模式提供了評估語言的語法或表示式的方式,它屬於行為型模式。這種模式實現了乙個表示式介面,該介面解釋乙個特定的上下文。這種模式被用在 sql 解析 符號處理引擎等。優點 1 可擴充套件性比較好,靈活。2 增加了新的解釋表示式的方式。3 易於實現簡單文法。缺點 1 可利用場景比較少。2 對於複雜的...

Java設計模式之直譯器模式

直譯器模式用於描述如何構成乙個簡單的語言直譯器,主要應用於使用物件導向語言開發的直譯器的設計。當需要開發乙個新的語言時可以考慮使用直譯器模式。在某些情況下,為了更好地描述某些特定型別的問題可以建立一種新的語言,這種語言擁有自己的表示式和結構,即文法規則,這些問題的例項將對應為該語言中的句子,此時可以...

Java設計模式之直譯器模式

定義 一種語法分析工具,用來分步解釋乙個複雜的運算過程,複雜運算拆分成多個小運算。需求 計算 1 2 3 4 的值。必備元素 建立直譯器介面,裡面包含乙個解釋操作的方法 public inte ce expression 建立終結符表示式,裡面計算加法 public class terminalex...