Explore Library
Code Quiz

Strategy Pattern via Composition

Spot the delegation bug in a composition-based Strategy pattern payment processor.

Codejavascript
class CreditCard {
  pay(amount) {
    return `Paid ${amount} with credit card`;
  }
}

// Favors composition: behavior is injected, not inherited
class PaymentProcessor {
  constructor(strategy) {
    this.strategy = strategy;
  }

  process(amount) {
    return strategy.pay(amount);
  }
}

const processor = new PaymentProcessor(new CreditCard());
console.log(processor.process(100));

What is the bug in this composition-based Strategy implementation?