Fork me on GitHub

解释器模式

解释器模式时一种使用的比较少的行为类设计模式,也比较难以理解,但是在系统设计的时候,解释器模式则被广泛地使用了,比如说在解析文件的时候

这里举一个解释器模式的简单例子

抽象算数运算解释器

1
2
3
public abstract class ArithmeticExpression {
public abstract int interpret();
}

数字解释器

1
2
3
4
5
6
7
8
9
10
public class NumExpression extends ArithmeticExpression {
private int num;
public NumExpression(int num) {
this.num = num;
}
@Override
public int interpret() {
return num;
}
}

符号解释器

1
2
3
4
5
6
7
public abstract class  OperatorExpression extends ArithmeticExpression {
protected ArithmeticExpression exp1,exp2;
public OperatorExpression(ArithmeticExpression exp1, ArithmeticExpression exp2) {
this.exp1 = exp1;
this.exp2 = exp2;
}
}

加法运算解释器

1
2
3
4
5
6
7
8
9
10
public class AdditionExpression extends OperatorExpression {
public AdditionExpression(ArithmeticExpression exp1, ArithmeticExpression exp2) {
super(exp1, exp2);
}

@Override
public int interpret() {
return exp1.interpret() + exp2.interpret();
}
}

这里只是举了一个简单的加法算术例子,可能会显得有些鸡肋,但是在复杂的解析当中,解释器模式会起到很好的作用