策略模式解決了定義一系列演算法、封裝每個演算法並使它們可以互換的需要。這種模式使演算法的變化獨立於使用它的客戶端。當您有多種方法來執行特定任務並希望在運行時選擇演算法時,它非常有用。
策略模式涉及三個主要組成部分:
上下文將演算法的執行委託給策略對象,這允許在運行時選擇演算法。
策略模式的一個實際範例是在支付處理系統中,其中不同的支付方式(例如信用卡、PayPal、銀行轉帳)被實現為不同的策略。客戶端可以在運行時選擇合適的支付策略。
代碼中的策略模式:
java // Strategy Interface public interface PaymentStrategy { void pay(int amount); } // Concrete Strategy 1 public class CreditCardPayment implements PaymentStrategy { private String cardNumber; public CreditCardPayment(String cardNumber) { this.cardNumber = cardNumber; } @Override public void pay(int amount) { System.out.println(amount " paid with credit card " cardNumber); } } // Concrete Strategy 2 public class PayPalPayment implements PaymentStrategy { private String email; public PayPalPayment(String email) { this.email = email; } @Override public void pay(int amount) { System.out.println(amount " paid using PayPal account " email); } } // Context public class ShoppingCart { private PaymentStrategy paymentStrategy; public void setPaymentStrategy(PaymentStrategy paymentStrategy) { this.paymentStrategy = paymentStrategy; } public void checkout(int amount) { paymentStrategy.pay(amount); } } // Client code public class Client { public static void main(String[] args) { ShoppingCart cart = new ShoppingCart(); cart.setPaymentStrategy(new CreditCardPayment("1234-5678-9876-5432")); cart.checkout(100); cart.setPaymentStrategy(new PayPalPayment("[email protected]")); cart.checkout(200); } }
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3