java的策略者模式应该怎么做?
时间: 2023-11-19 18:05:26 浏览: 23
Java的策略者模式是一种行为设计模式,它允许在运行时选择算法的行为。该模式定义了一系列算法,并将每个算法封装起来,使它们可以互换。下面是一个简单的策略者模式实现的示例:
首先,我们需要定义一个接口,它包含了所有实现算法的方法:
```java
public interface Strategy {
void executeStrategy();
}
```
然后我们定义具体的算法实现类:
```java
public class ConcreteStrategyA implements Strategy {
@Override
public void executeStrategy() {
System.out.println("执行策略A");
}
}
public class ConcreteStrategyB implements Strategy {
@Override
public void executeStrategy() {
System.out.println("执行策略B");
}
}
public class ConcreteStrategyC implements Strategy {
@Override
public void executeStrategy() {
System.out.println("执行策略C");
}
}
```
接下来,我们定义一个 Context 类,它包含一个 Strategy 对象,并提供了一个 setStrategy() 方法,用于动态设置算法:
```java
public class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy() {
strategy.executeStrategy();
}
}
```
最后,我们可以使用 Context 类来执行具体的算法:
```java
public class Client {
public static void main(String[] args) {
Context context = new Context();
context.setStrategy(new ConcreteStrategyA());
context.executeStrategy(); // 输出 "执行策略A"
context.setStrategy(new ConcreteStrategyB());
context.executeStrategy(); // 输出 "执行策略B"
context.setStrategy(new ConcreteStrategyC());
context.executeStrategy(); // 输出 "执行策略C"
}
}
```
在这个示例中,我们定义了三种具体的策略实现类(ConcreteStrategyA、ConcreteStrategyB 和 ConcreteStrategyC),然后通过 Context 对象来执行具体的算法。通过使用这种模式,我们可以轻松地增加或删除算法实现,并且不需要修改 Context 类的代码,从而实现了算法的灵活可配置性。