名稱:interpreter
結構:
意圖:
給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。
適用性:
當有乙個語言需要解釋執行, 並且你可將該語言中的句子表示為乙個抽象語法樹時,可使用直譯器模式。而當存在以下情況時該模式效果最好:
該文法簡單對於複雜的文法, 文法的類層次變得龐大而無法管理。此時語法分析程式生成器這樣的工具是更好的選擇。它們無需構建抽象語法樹即可解釋表示式, 這樣可以節省空間而且還可能節省時間。
效率不是乙個關鍵問題最高效的直譯器通常不是通過直接解釋語法分析樹實現的, 而是首先將它們轉換成另一種形式。例如,正規表示式通常被轉換成狀態機。但即使在這種情況下, 轉換器仍可用直譯器模式實現, 該模式仍是有用的。
示例**:
// interpreter
namespace interpreter_designpattern
abstract
class abstractexpression
// class for terminal symbol
class terminalexpression : abstractexpression
}// class for grammar rule (one per rule needed)
class nonterminalexpression : abstractexpression }
// to extend grammar, just add other nonterminalexpression classes
///
/// summary description for client.
///
public
class client
return 0;}}
}
C 設計模式 之 設計模式概述
一,為什麼學習設計模式?二,什麼是設計模式?三,怎麼描述設計模式?四,設計模式有哪幾類?五,設計模式之間的關係?六,學習設計模式的四種狀態 作為攻城獅 設計模式 這個詞應該都不陌生,那麼,你有靜下心來系統的學習它一下嗎?本系列博文描述了物件導向設計模式的實現。之所以取名為 c 設計模式,是因為我在文...
C 之設計模式
單例的一種實現方式 1.建構函式私有化 2.宣告乙個靜態字段,作為全域性唯一的單例物件 3.宣告乙個靜態函式,返回全域性唯一的物件 using system using system.collections.generic using system.linq using system.text us...
c 設計模式之 工廠模式
使用工廠的客戶根本不知道具體的類.工廠的使用者建立乙個基類的物件.但由子類決定例項化哪個.這就允許我們服從子類的例項化,但是呼叫都不知道哪個物件被建立.來自源 wiki include class button class osxbutton public button class windowsb...