javascript策略模式的案例介绍
dearweb 发布:2023-03-09 09:54:23阅读:JavaScript策略模式是一种常见的设计模式,它通过定义一系列算法,并将它们封装在可以相互替换的策略对象中,以便根据不同的情况使用不同的策略。
以下是一个使用JavaScript策略模式的案例:
假设我们正在编写一个电商网站的购物车功能,需要计算购物车中所有商品的总价格。我们可以使用策略模式来实现不同的价格计算算法,例如:
1.普通会员用户享受9折优惠;
2.白银会员用户享受8折优惠;
3.黄金会员用户享受7折优惠;
4.钻石会员用户享受6折优惠。
我们可以定义一个名为`PriceStrategy`的策略对象,包含不同的计算价格算法。每个算法都包含一个`calculate`方法,用于计算不同类型用户的总价格。
示例代码如下:
```javascript
//定义价格策略对象
const PriceStrategy = {
//普通会员价格计算方法
normal: function (price) {
return price * 0.9;
},
//白银会员价格计算方法
silver: function (price) {
return price * 0.8;
},
//黄金会员价格计算方法
gold: function (price) {
return price * 0.7;
},
//钻石会员价格计算方法
diamond: function (price) {
return price * 0.6;
},
};
//定义购物车对象
const ShoppingCart = function (priceStrategy) {
this.priceStrategy = priceStrategy;
this.products = [];
};
//添加商品
ShoppingCart.prototype.addProduct = function (product) {
this.products.push(product);
};
//计算总价格
ShoppingCart.prototype.calculateTotalPrice = function () {
let totalPrice = 0;
this.products.forEach((product) => {
totalPrice += this.priceStrategy.calculate(product.price);
});
return totalPrice;
};
//创建购物车实例
const cart = new ShoppingCart(PriceStrategy.gold);
//添加商品
cart.addProduct({ name: "商品1", price: 100 });
cart.addProduct({ name: "商品2", price: 200 });
//计算总价格
const totalPrice = cart.calculateTotalPrice();
console.log("总价格为:" + totalPrice);
```
在上面的代码中,我们首先定义了一个名为`PriceStrategy`的策略对象,它包含了普通会员、白银会员、黄金会员和钻石会员的价格计算方法。
然后,我们定义了一个名为`ShoppingCart`的购物车对象,它接受一个`priceStrategy`参数,该参数用于指定不同类型用户的价格计算策略。购物车对象还有添加商品和计算总价格的方法。
最后,我们创建了一个购物车实例,并向其添加了两个商品,然后调用了`calculateTotalPrice`方法计算总价格。在这里,我们选择
小礼物走一波,支持作者
赏还没有人赞赏,支持一波吧