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?