strategy 设计模式 代码
时间: 2023-07-23 21:58:54 浏览: 45
下面是一个使用策略设计模式的示例代码:
```java
// 策略接口
interface Strategy {
void execute();
}
// 具体策略类A
class ConcreteStrategyA implements Strategy {
@Override
public void execute() {
System.out.println("执行具体策略A");
}
}
// 具体策略类B
class ConcreteStrategyB implements Strategy {
@Override
public void execute() {
System.out.println("执行具体策略B");
}
}
// 上下文类
class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy() {
strategy.execute();
}
}
// 客户端代码
public class Main {
public static void main(String[] args) {
// 创建具体策略对象
Strategy strategyA = new ConcreteStrategyA();
Strategy strategyB = new ConcreteStrategyB();
// 创建上下文对象,并传入具体策略对象
Context contextA = new Context(strategyA);
Context contextB = new Context(strategyB);
// 执行具体策略
contextA.executeStrategy(); // 输出:执行具体策略A
contextB.executeStrategy(); // 输出:执行具体策略B
}
}
```
在上面的代码中,定义了一个策略接口 `Strategy`,具体的策略类 `ConcreteStrategyA` 和 `ConcreteStrategyB` 实现了该接口,并分别提供了不同的算法实现。上下文类 `Context` 包含一个策略接口的引用,并通过调用策略接口的方法来执行具体的策略。
在客户端代码中,创建了具体的策略对象,并将其传递给上下文对象。然后通过调用上下文对象的 `executeStrategy()` 方法来执行具体的策略。输出结果会根据不同的策略而有所不同。
这个示例展示了策略设计模式的基本结构和使用方式。通过使用策略模式,可以很方便地切换和扩展算法,同时保持了客户端代码的简洁性和可读性。