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,并通过它来选择不同的具体策略实现类。这样,我们就可以非常容易地动态地修改策略选择器的具体策略,从而达到不同的执行效果。