在Java中,策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一种算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。以下是一个简单的策略模式应用实现方法:
首先,我们定义一个策略接口,该接口声明了算法共有的方法:
public interface Strategy {
void execute(); // 声明算法接口
}
然后,我们创建实现了该接口的具体策略类。这里以两个具体策略为例:
public class ConcreteStrategyA implements Strategy {
@Override
public void execute() {
System.out.println("Executing strategy A");
// 实现算法A的逻辑
}
}
public class ConcreteStrategyB implements Strategy {
@Override
public void execute() {
System.out.println("Executing strategy B");
// 实现算法B的逻辑
}
}
接下来,我们创建一个Context类,它使用策略接口。Context接受客户的请求,随后把请求委托给一个或多个策略对象,由策略对象来执行具体的算法。
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 StrategyPatternDemo {
public static void main(String[] args) {
Context context = new Context(new ConcreteStrategyA());
context.executeStrategy(); // 输出:Executing strategy A
context.setStrategy(new ConcreteStrategyB());
context.executeStrategy(); // 输出:Executing strategy B
}
}
这个简单的例子展示了策略模式的基本用法:通过定义一系列的算法,把它们一个个封装起来,并使它们可相互替换。此模式让算法的变化独立于使用算法的客户。