使用策略模式描述四则运算
时间: 2023-10-24 18:11:21 浏览: 64
策略模式可以用来描述四则运算,具体实现方法如下:
1. 定义一个接口或抽象类,包含一个计算方法calculate(),用来执行具体的四则运算。
2. 实现四个具体的策略类,分别代表加法、减法、乘法和除法操作,这些类都实现了calculate()方法。
3. 定义一个上下文类,它包含一个具体的策略对象,根据需要调用策略对象的calculate()方法来进行计算。
4. 在客户端代码中,根据输入的运算符号创建相应的策略对象,并将其传递给上下文对象,然后调用上下文对象的calculate()方法执行四则运算。
下面是具体的实现代码:
```java
// 定义四则运算接口
public interface Operation {
int calculate(int a, int b);
}
// 实现加法策略类
public class AddOperation implements Operation {
@Override
public int calculate(int a, int b) {
return a + b;
}
}
// 实现减法策略类
public class SubOperation implements Operation {
@Override
public int calculate(int a, int b) {
return a - b;
}
}
// 实现乘法策略类
public class MulOperation implements Operation {
@Override
public int calculate(int a, int b) {
return a * b;
}
}
// 实现除法策略类
public class DivOperation implements Operation {
@Override
public int calculate(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("除数不能为0");
}
return a / b;
}
}
// 上下文类
public class Calculator {
private Operation operation;
public Calculator(Operation operation) {
this.operation = operation;
}
public int calculate(int a, int b) {
return operation.calculate(a, b);
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
char operator = '+';
int a = 10, b = 5;
Operation operation;
switch (operator) {
case '+':
operation = new AddOperation();
break;
case '-':
operation = new SubOperation();
break;
case '*':
operation = new MulOperation();
break;
case '/':
operation = new DivOperation();
break;
default:
throw new IllegalArgumentException("不支持的运算符:" + operator);
}
Calculator calculator = new Calculator(operation);
int result = calculator.calculate(a, b);
System.out.printf("%d %c %d = %d", a, operator, b, result);
}
}
```
以上代码实现了四则运算的策略模式,通过修改客户端代码中的运算符号,可以实现不同的运算。