SOLID Principles in JavaScript
Which SOLID principle is being applied in this payment processing implementation?
interface PaymentStrategy {
  process(amount: number): Promise<void>;
}
class CreditCardPayment implements PaymentStrategy {
  process(amount: number) { /* ... */ }
}
class PayPalPayment implements PaymentStrategy {
  process(amount: number) { /* ... */ }
}
class CryptoPayment implements PaymentStrategy {
  process(amount: number) { /* ... */ }
}
class PaymentProcessor {
  constructor(private strategy: PaymentStrategy) {}
  processPayment(amount: number) {
    return this.strategy.process(amount);
  }
}