特定領域,某些變化雖然頻繁,但是可以抽象為某種規則;結合特定領域,將問題抽象為語法規則,從而給出該領域的一般性解決方案。
interpreter屬於"領域規則"模式。
motivation:軟體構件過程中,對於某一特定領域的問題比較複雜,類似結構重複出現;可以將特定領域的問題表達為語法規則下的句子,然後使用直譯器來解釋這樣的句子。
key inte***ce or class:
1. 一定會有個terminal類繼承abstractexpression類。
feature: 對規則進行抽像。
}//變數表示式
class varexpression: public expression
int interpreter(mapvar) override
};//符號表示式
class symbolexpression: public expression
};//加法運算,繼承符號表示式
class addexpression: public symbolexpression
int interpreter(mapvar) override
}//減法運算,繼承符號表示式
class substractexpression: public symbolexpression
int interpreter(mapvar) override
}expression* analyse(string str)
summary:
1. interpreter的使用場景是其難點,只有滿足「業務規則頻繁變化,且類似結構不斷重複出現,並且容易抽象為語法規則」的問題,才適合使用interpreter模式;
2.使用interpreter模式來表示文法規則,從而可以使用面對物件技巧來方便地「擴充套件」文法;
3.interpreter模式適合於簡單的文法表示,對於複雜的文法表示會產生較大的類層次結構,可以借助於語法分析生成器這類的標準工具。
easyui 的頁面解析 parser解析器
一直感覺easyui是在dom載入完成後再對easyui元件進行載入的,之前在easyui框架做select class combobox 值選中時,用jquery.val 是沒辦法設定select的值的,其實這就是easyui框架是在dom載入完成後又對easyui元件進行了解析,為了載入easy...
設計模式之解析器
一 作用 定義乙個語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的 語言 是指使用規定格式和語法的 直譯器模式是一種類行為型模式。二 特點 它將文法分為終結者和非終結者,挺簡單的。三 例子 抽象表示式 abstract class node 非終結符表示式 class addnode ex...
設計模式 解析器模式 Interpreter
意圖 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子 適用性 1 當有乙個語言需要解釋執行,並且你可以把該語言中的句子表示為乙個抽象的語法樹時,可使用直譯器模式 而當存在以下情況時,該模式的效果最好 2 該文法簡單,對於複雜的文法,文法的類層次變得龐大...