전략 패턴은 알고리즘 계열을 정의하고 각 알고리즘을 캡슐화하며 상호 교환 가능하게 만드는 필요성을 해결합니다. 이 패턴을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘이 달라질 수 있습니다. 특정 작업을 수행하는 방법이 여러 가지이고 런타임에 알고리즘을 선택하려는 경우 유용합니다.
전략 패턴에는 세 가지 주요 구성 요소가 포함됩니다.
컨텍스트는 알고리즘 실행을 전략 개체에 위임하여 런타임 시 알고리즘을 선택할 수 있도록 합니다.
전략 패턴의 실제 예는 다양한 결제 방법(예: 신용카드, 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!