解释器模式(Interpreter)
@@@模式定义:
给定一个语言,定义它的文法的一种表示,并定义一个解释器,
这个解释器使用该表示来解释语言中的句子。
@@@练习示例:
输入一个模型公式,然后输入模型中的参数,运算出结果。
@@@示例代码:
/pattern/Expression.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package user;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import pattern.Calculator;public class Client { // 进行四则运算public static void main(String[] args) throws IOException {String expStr = getExpStr(); // 赋值 HashMap<String, Integer> var = getValue(expStr); Calculator cal = new Calculator(expStr); System.out.println("运算结果为:" + expStr + "=" + cal.run(var)); }// 获得表达式public static String getExpStr() throws IOException{ System.out.print("请输入表达式:"); return (new BufferedReader(new InputStreamReader(System.in))).readLine(); }// 获得值映射public static HashMap<String,Integer> getValue(String exprStr) throws IOException{ HashMap<String, Integer> map = new HashMap<String, Integer>(); // 解析有几个参数要传递 for(char ch : exprStr.toCharArray()){ if(ch != '+' && ch != '-'){ if(!map.containsKey(String.valueOf(ch))){ // 解决重复参数的问题 System.out.print("请输入" + ch + "的值:"); String in = (new BufferedReader(new InputStreamReader(System.in))).readLine(); map.put(String.valueOf(ch), Integer.valueOf(in)); } } } return map;}}