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,并通過它來選擇不同的具體策略實現類。這樣,我們就可以非常容易地動態地修改策略選擇器的具體策略,從而達到不同的執行效果。
上一篇python畫小貓咪