基于设计模式中的策略模式写一个例子
时间: 2023-05-24 10:02:25 浏览: 61
当然可以!策略模式是一种行为型设计模式,可以让你在运行时更改对象的行为,这是通过将算法封装在独立的类中,使得它们可以相互替换,而不影响客户端的行为。下面是一个简单的例子:
首先,我们定义一个接口,该接口将作为所有具体策略类的基础:
```
public interface Strategy {
int execute(int a, int b);
}
```
然后,我们创建三个具体策略类:
```
public class Add implements Strategy {
public int execute(int a, int b) {
return a + b;
}
}
public class Subtract implements Strategy {
public int execute(int a, int b) {
return a - b;
}
}
public class Multiply implements Strategy {
public int execute(int a, int b) {
return a * b;
}
}
```
接下来,我们创建一个包含策略对象的上下文,并实现一个方法,用于更改当前策略:
```
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeStrategy(int a, int b) {
return strategy.execute(a, b);
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
}
```
最后,我们可以在客户端中使用上下文对象,并通过设置不同的策略来改变行为:
```
public static void main(String[] args) {
Context context = new Context(new Add());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context.setStrategy(new Subtract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context.setStrategy(new Multiply());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
```
这个例子展示了如何使用策略模式将算法封装在独立的类中,并能够在运行时更改对象的行为,让我们的代码更具有灵活性和可维护性。