Java中的策略模式和工廠模式是常見的設計模式,本文將介紹策略模式和工廠模式結合的應用。
策略模式是指在運行時動態地從一組算法中選擇一種并執行對應的操作。工廠模式則是指根據給定的信息創建對應的對象實例。策略模式和工廠模式結合使用,可以實現在運行時根據不同情況選擇不同的算法,并且使用工廠模式創建對應的算法實例。
public interface Strategy { int execute(int num1, int num2); } public class AddOperation implements Strategy { @Override public int execute(int num1, int num2) { return num1 + num2; } } public class SubtractOperation implements Strategy { @Override public int execute(int num1, int num2) { return num1 - num2; } } public class MultiplyOperation implements Strategy { @Override public int execute(int num1, int num2) { return num1 * num2; } } public class DivideOperation implements Strategy { @Override public int execute(int num1, int num2) { return num1 / num2; } } public class OperationFactory { public static Strategy createOperation(String operation) { switch (operation) { case "+": return new AddOperation(); case "-": return new SubtractOperation(); case "*": return new MultiplyOperation(); case "/": return new DivideOperation(); default: throw new IllegalArgumentException("Unsupported operation: " + operation); } } }
上述代碼中,定義了一個Strategy接口,以及四個實現該接口的算法類。同時,還定義了一個工廠類OperationFactory,通過傳入不同的算法名稱來創建對應的算法實例。
在使用時,可以先從控制臺獲取用戶輸入的算法名稱和兩個操作數,然后使用工廠類創建對應的算法實例。最后,調用算法實例的execute方法進行運算。
例如,如果用戶輸入+、2和3,則會創建AddOperation實例進行加法運算,返回5。
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String operation = scanner.nextLine(); int num1 = scanner.nextInt(); int num2 = scanner.nextInt(); scanner.close(); Strategy strategy = OperationFactory.createOperation(operation); int result = strategy.execute(num1, num2); System.out.println(result); } }
綜上,策略模式和工廠模式的結合使用可以實現在運行時動態地選擇不同的算法,并且使用工廠模式創建對應的算法實例。