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