位置:首页 > web前端 > javascript

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`方法计算总价格。在这里,我们选择


24人点赞 返回栏目 提问 分享一波

小礼物走一波,支持作者

还没有人赞赏,支持一波吧

留言(问题紧急可添加微信 xxl18963067593) 评论仅代表网友个人 留言列表

暂无留言,快来抢沙发吧!

本刊热文
网友在读
手机扫码查看 手机扫码查看