interface Pay {
pay(price: number): number;
}
class NaverPay implements Pay {
pay(price: number) {
console.log('naver...');
return price;
}
}
class KaKaoPay implements Pay {
pay(price: number) {
console.log('kakao...');
return price;
}
}
class Payment {
constructor(
private readonly payment: Pay,
) {}
pay(price: number) {
return this.payment.pay(price);
}
}
const nPay = new Payment(new NaverPay());
nPay.pay(1000);
const kPay = new Payment(new KaKaoPay());
kPay.pay(2000);