策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装到具有公共接口的一系列具体策略类中,使它们可以相互替换。策略模式让算法独立于使用它的客户端。
下面是一个简单的Java策略模式示例代码:
首先,定义一个接口,用于实现策略模式:
public interface Strategy {
void execute();
}
接下来,定义一个具体的策略类,实现Strategy接口:
public class ConcreteStrategyA implements Strategy {
@Override
public void execute() {
System.out.println("执行策略A");
}
}
public class ConcreteStrategyB implements Strategy {
@Override
public void execute() {
System.out.println("执行策略B");
}
}
定义一个上下文类,用于管理策略模式:
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy() {
strategy.execute();
}
}
最后,客户端代码使用策略模式:
public class Client {
public static void main(String[] args) {
Context context = new Context(new ConcreteStrategyA());
context.executeStrategy();
context.setStrategy(new ConcreteStrategyB());
context.executeStrategy();
}
}
运行结果如下:
执行策略A
执行策略B
通过这种方式,客户端可以根据不同的情况选择不同的策略,而无需修改客户端代码。这使得算法独立于使用它的客户端,提高了代码的可扩展性和可维护性。