策略模式java
时间: 2023-06-29 07:11:26 浏览: 96
策略模式(Java)
策略模式是一种行为设计模式,它允许您在运行时更改对象的行为。在策略模式中,您可以定义不同的算法或策略,并将它们封装在单独的类中,以便在运行时根据需要选择其中之一。
在 Java 中实现策略模式,您可以创建一个接口来定义算法的抽象方法,并创建一些实现该接口的类来实现不同的算法。然后,您可以在需要使用算法的类中创建一个成员变量来保存该算法的引用,并在运行时将其设置为不同的实现类的实例。这样,您就可以根据需要更改对象的行为,而不必更改其代码。
以下是一个简单的 Java 代码示例,演示了如何使用策略模式:
```java
// 定义策略接口
interface Strategy {
void execute();
}
// 定义具体策略类
class ConcreteStrategyA implements Strategy {
public void execute() {
System.out.println("执行策略 A");
}
}
class ConcreteStrategyB implements Strategy {
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 void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
}
// 使用策略模式
public class StrategyPatternExample {
public static void main(String[] args) {
// 创建具体策略类的实例
Strategy strategyA = new ConcreteStrategyA();
Strategy strategyB = new ConcreteStrategyB();
// 创建上下文对象,并设置初始策略
Context context = new Context(strategyA);
// 执行策略 A
context.executeStrategy();
// 更改策略为 B
context.setStrategy(strategyB);
// 执行策略 B
context.executeStrategy();
}
}
```
在上面的示例中,我们定义了一个 `Strategy` 接口和两个具体策略类 `ConcreteStrategyA` 和 `ConcreteStrategyB`。我们还定义了一个 `Context` 类,该类包含一个 `Strategy` 类型的成员变量,并在 `executeStrategy()` 方法中调用该策略的 `execute()` 方法。在 `main()` 方法中,我们创建了 `ConcreteStrategyA` 和 `ConcreteStrategyB` 的实例,并将其传递给 `Context` 对象。我们还使用 `setStrategy()` 方法更改了上下文对象的策略,并在每次更改后调用 `executeStrategy()` 方法来执行新的策略。
阅读全文