Strategy パターンは、アルゴリズムのファミリーを定義し、それぞれをカプセル化し、それらを交換可能にする必要性に対処します。このパターンでは、アルゴリズムを使用するクライアントとは独立してアルゴリズムを変更できます。これは、特定のタスクを実行する方法が複数あり、実行時にアルゴリズムを選択したい場合に便利です。
戦略パターンには 3 つの主要なコンポーネントが含まれます:
コンテキストはアルゴリズムの実行を戦略オブジェクトに委任し、実行時にアルゴリズムを選択できるようにします。
戦略パターンの実際的な例は、さまざまな支払い方法 (クレジット カード、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("user@example.com")); cart.checkout(200); } }
以上がJava の戦略設計パターンを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。