設計模式之直譯器模式

2021-10-05 08:40:33 字數 2399 閱讀 7619

直譯器模式實現四則

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

* 抽象運算符號解析器 這裡,每個運算符號都只和自己左右兩個數字有關係,

* * 但左右兩個數字有可能也是乙個解析的結果,無論何種型別,都是expression類的實現類

* @author administrator

* */

public class symbolexpression extends expression

/*** symbolexpression 因為是讓其子類實現,因此 interpreter是乙個預設實現

* @param var

* @return

*/@override

public int interpreter(hashmapvar)

}

/**

* 加法直譯器

*/public class addexpression extends symbolexpression

/*** 處理相加

* * @param var 仍然是{}

* @return

*/@override

public int interpreter(hashmapvar)

}

public class subexpression extends symbolexpression 

/*** 求出left 和right 表示式相減後的結果

* @param var

* @return

*/@override

public int interpreter(hashmapvar)

}

/**

* 變數的直譯器

*/public class varexpression extends expression

/*** var就是

* interpreter 根據變數名稱,返回對應值

* @param var

* @return

*/@override

public int interpreter(hashmapvar)

}

/**

* 抽象類表示式,通過hashmap 鍵值對 可以獲取到各個變數值

* * @author admin

*/public abstract class expression

* @param var

* @return

*/public abstract int interpreter(hashmapvar);

}

public class calculator 

} //當遍歷完整個 chararray陣列後 棧中就得到最後的expression

this.expression = stack.pop();

} /**

* * @param var

* @return

*/public int run(hashmapvar) 繫結

//然後傳遞給expression的interpreter進行解釋執行

設計模式之直譯器模式

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

設計模式之直譯器模式

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

設計模式之直譯器模式

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