JAVA解释器模式实现两位数的加减法
时间: 2024-05-14 11:14:56 浏览: 17
以下是JAVA解释器模式实现两位数的加减法的示例代码:
首先定义表达式接口Expression:
```java
public interface Expression {
int interpret();
}
```
然后定义加法表达式AddExpression和减法表达式SubExpression:
```java
public class AddExpression implements Expression {
private Expression left;
private Expression right;
public AddExpression(Expression left, Expression right) {
this.left = left;
this.right = right;
}
@Override
public int interpret() {
return left.interpret() + right.interpret();
}
}
public class SubExpression implements Expression {
private Expression left;
private Expression right;
public SubExpression(Expression left, Expression right) {
this.left = left;
this.right = right;
}
@Override
public int interpret() {
return left.interpret() - right.interpret();
}
}
```
最后定义数字表达式NumberExpression:
```java
public class NumberExpression implements Expression {
private int number;
public NumberExpression(int number) {
this.number = number;
}
@Override
public int interpret() {
return number;
}
}
```
使用示例:
```java
// 计算 12 + 34 - 56
Expression expression = new SubExpression(
new AddExpression(new NumberExpression(12), new NumberExpression(34)),
new NumberExpression(56)
);
int result = expression.interpret(); // result = -10
```
上述代码中,SubExpression和AddExpression均采用了组合模式,将左右表达式组合起来,实现计算。NumberExpression表示一个数字,interpret方法返回数字本身。最终生成的表达式为SubExpression,调用interpret方法即可得到计算结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)