直譯器模式,給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。
在直譯器模式中由於語法是由很多類表示的,當語法規則更改時,只需修改相應的非終結符表示式即可;若擴充套件語法時,只需新增相應非終結符類即可。
特徵:為了解釋一種語言,而為語言建立的直譯器。
給出乙個運算表示式,根據直譯器模式計算出相應的結果
類結構圖
數字計算直譯器介面 iarithmeticinterpreter
public inte***ce iarithmeticinterpreter
直譯器統一抽象類 interpreter
public abstract class interpreter implements iarithmeticinterpreter
}
加法直譯器 addinterpreter
public class addinterpreter extends interpreter
@override
public int interpret()
}
減法直譯器 subinterpreter
public class subinterpreter extends interpreter
@override
public int interpret()
}
乘法直譯器 multiinterpreter
public class multiinterpreter extends interpreter
@override
public int interpret()
}
除法直譯器 divinterpreter
public class divinterpreter extends interpreter
@override
public int interpret()
}
數字值解析器 numinterpreter
public class numinterpreter implements iarithmeticinterpreter
@override
public int interpret()
}
計算器入口 selfcalculator
public class selfcalculator
private void parse(string expression) else
} }public int calculate()
}
操作符工具類 operatorutil
public class operatorutil
public static interpreter getinterpreter(iarithmeticinterpreter left, iarithmeticinterpreter right,string symbol) else if (symbol.equals("-")) else if (symbol.equals("*")) else if (symbol.equals("/"))
return null;
}}
測試 test
PHP設計模式系列 直譯器模式
直譯器模式 用於分析乙個實體的關鍵元素,並且針對每個元素提供自己的解釋或相應動作。直譯器模式非常常用,比如php的模板引擎 就是非常常見的一種直譯器模。直譯器模式 用於分析乙個實體的關鍵元素,並且針對每個元素提供自己的解釋或相應動作 直譯器模式非常常用,比如php的模板引擎 就是非常常見的一種直譯器...
設計模式系列之 直譯器模式
這種型別的設計模式屬於行為型模式,它他解決了方法的合理呼叫 直譯器模式用於對表示式 字串的解析 如espl 正規表示式等 可以通過自定義規則來使用直譯器建立一種語法簡易 如espl 直譯器需要的角色 解析器類 用來制定規則按情況呼叫不同的表示式類完成解析 抽象表示式類 在此類生成結果 具體表示式 類...
設計模式 直譯器模式
未來機器智慧型化已然成為趨勢,現在手機都能聽懂英語和普通話,那我大中華幾萬種方言的被智慧型化也許也是趨勢,我們的方言雖然和普通話相似,但是還是不一樣的。這可能需要乙個新的語法分析器來幫助我們。我們的直譯器模式就是描述了如何為簡單的語言定義乙個文法,如何在該語言中表示乙個句子,以及如何解釋這些句子。但...