跳到主要内容

Strategy

策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换

class ShoppingCart {
constructor(discount) {
this.discount = discount;
this.amount = 0;
}

checkout() {
return this.discount(this.amount);
}

setAmount(amount) {
this.amount = amount;
}
}

function guestStrategy(amount) {
return amount;
}

function regularStrategy(amount) {
return amount * 0.9;
}

function premiumStrategy(amount) {
return amount * 0.8;
}

const guestCart = new ShoppingCart(guestStrategy);
guestCart.setAmount(100);

console.log(guestCart.checkout()); //100

const regularCart = new ShoppingCart(regularStrategy);
regularCart.setAmount(100);

console.log(regularCart.checkout()); //90

const premiumCart = new ShoppingCart(premiumStrategy);
premiumCart.setAmount(100);

console.log(premiumCart.checkout()); //80