淘先锋技术网

首页 1 2 3 4 5 6 7

Java策略模式是一种非常好用的设计模式,它可以让我们通过定义一系列可供选择的算法,并将它们封装在一个接口中,从而在运行时选择其中的一种算法来完成某个特定的任务。这样的好处是,在不改变原有代码的基础上,我们可以非常容易地增加新的算法,并能够动态地选择不同的算法来满足不同的需求。

策略模式的核心思想是利用Java的多态机制,在运行时根据具体的算法类型来选择不同的具体实现类。具体实现类都必须实现策略接口,这样才能被算法选择器使用。

/**
 * 策略接口
 */
public interface Strategy {
void execute();
}
/**
 * 具体策略实现类A
 */
public class ConcreteStrategyA implements Strategy {
@Override
public void execute() {
System.out.println("执行策略A");
}
}
/**
 * 具体策略实现类B
 */
public class ConcreteStrategyB implements Strategy {
@Override
public void execute() {
System.out.println("执行策略B");
}
}
/**
 * 策略选择器
 */
public class StrategySelector {
private Strategy strategy;
public StrategySelector(Strategy strategy) {
this.strategy = strategy;
}
public void select() {
strategy.execute();
}
}
/**
 * 测试类
 */
public class StrategyPatternTest {
public static void main(String[] args) {
StrategySelector selector = new StrategySelector(new ConcreteStrategyA());
selector.select();
selector = new StrategySelector(new ConcreteStrategyB());
selector.select();
}
}

上面的代码中,我们定义了一个策略接口Strategy,和两个具体策略实现类ConcreteStrategyA和ConcreteStrategyB,分别实现了execute()方法。我们还定义了一个策略选择器StrategySelector,它会在运行时根据具体的策略类型来选择相应的实现类,并执行它的execute()方法。

在测试类StrategyPatternTest中,我们创建了一个具体的策略选择器selector,并通过它来选择不同的具体策略实现类。这样,我们就可以非常容易地动态地修改策略选择器的具体策略,从而达到不同的执行效果。