Strategy Design Pattern
Key Components of Strategy Design Pattern
Use Case Example: Car Payment System
Implementation in Java (Spring Boot)
public interface PaymentStrategy { void pay(double amount); }// CreditCardPayment.java public class CreditCardPayment implements PaymentStrategy { @Override public void pay(double amount) { System.out.println("Paid " + amount + " using Credit Card."); } } // PayPalPayment.java public class PayPalPayment implements PaymentStrategy { @Override public void pay(double amount) { System.out.println("Paid " + amount + " using PayPal."); } } // CryptoPayment.java public class CryptoPayment implements PaymentStrategy { @Override public void pay(double amount) { System.out.println("Paid " + amount + " using Cryptocurrency."); } }public class PaymentContext { private PaymentStrategy paymentStrategy; public void setPaymentStrategy(PaymentStrategy paymentStrategy) { this.paymentStrategy = paymentStrategy; } public void executePayment(double amount) { if (paymentStrategy == null) { throw new IllegalStateException("Payment strategy not set."); } paymentStrategy.pay(amount); } }public class CarRentalServiceApplication { public static void main(String[] args) { PaymentContext paymentContext = new PaymentContext(); // Using Credit Card Payment paymentContext.setPaymentStrategy(new CreditCardPayment()); paymentContext.executePayment(100.0); // Switching to PayPal Payment paymentContext.setPaymentStrategy(new PayPalPayment()); paymentContext.executePayment(150.0); // Switching to Cryptocurrency Payment paymentContext.setPaymentStrategy(new CryptoPayment()); paymentContext.executePayment(200.0); } }
Explanation
Advantages of the Strategy Pattern
Real-World Analogy
Last updated