代码实现策略模式
时间: 2023-08-16 12:23:15 浏览: 83
策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法都封装起来,并且使它们可以相互替换。策略模式让算法独立于使用它的客户端而变化。
下面是一个用 Java 实现策略模式的例子:
首先定义一个策略接口:
```
public interface Strategy {
int doOperation(int num1, int num2);
}
```
然后实现几个具体的策略类:
```
public class OperationAdd implements Strategy {
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
public class OperationSubtract implements Strategy {
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
public class OperationMultiply implements Strategy {
public int doOperation(int num1, int num2) {
return num1 * num2;
}
}
```
接下来定义一个 Context 类,它持有一个 Strategy 对象,并且在需要执行某种算法时调用它:
```
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2){
return strategy.doOperation(num1, num2);
}
}
```
最后,我们可以在客户端代码中创建不同的策略对象并将它们传递给 Context 对象,然后执行相应的算法:
```
public class Main {
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationSubtract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationMultiply());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
}
```
输出结果:
```
10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
```
在这个例子中,我们将不同的算法封装在不同的策略类中,然后通过 Context 类来执行它们。这样就可以在不修改客户端代码的情况下更改算法的实现。
阅读全文