解析器模式定义解析器,然后来解析上下文中的句子。
public class Context {
private String str ;
public void setStr(String str) {
this .str = str;
}
public String getStr() {
return str ;
}
}
public interface AbstractExpression {
public void prase(Context context) ;
}
public class AddExpression implements AbstractExpression {
public void prase(Context context) {
String arr[] = context.getStr().split( "\\+" );
Integer result = Integer. parseInt(arr[0]) + Integer.parseInt(arr[1]);
System. out .println("AddExpression result is " + result);
}
}
public class SubtractExpression implements AbstractExpression {
public void prase(Context context) {
String arr[] = context.getStr().split( "\\-" );
Integer result = Integer. parseInt(arr[0].trim()) - Integer.parseInt(arr[1].trim());
System. out .println("SubtractExpression result is " + result);
}
}
public class InterpreterClient {
public static void main(String[] args) {
Context context = new Context();
context.setStr( "5+4" );
AbstractExpression add = new AddExpression();
add.prase(context);
context.setStr( "5-4" );
AbstractExpression sub = new SubtractExpression();
sub.prase(context);
}
}