js设计模式之策略模式学习

本文主要由网上整理而来

概念

策略模式是定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换。
一个类的行为和其算法可以在运行的时候更改。

标准范式

// 定义一个策略
let priceceStrategy = function(){
  // 内部算法对象 
  // 策略类
  let strategy = {
    return30(price){
      return price + parseInt(price / 100) * 30
    },
    return50(price){
      return price + parseInt(price / 100) * 50
    },
    price80(price){
      return price  * 80 / 100
    },
    price90(price){
      return price  * 90 / 100
    }
  }
  // 调用策略方法接口
  // 环境类
  return (type, price) => {
    return strategy[type] && strategy[type](price)
  }
}();

/* 
 * 调用 
 * priceceStrategy('return30', 100)
 *
*/

特点

由上面的标准范式中可以看到有两个类注释,分别策略类和环境类;
策略类保存所有的策略名对应的算法;
环境类用来调用具体的策略类中的策略算法;

使用场景

在有多种相似算法的情况下,使用if...else所带来的复杂和年便已维护的问题。

旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。

商场促销方式,打折、满减等。

引用来源参考

js 设计模式——策略模式

js策略模式之浅谈

简说设计模式——策略模式

你可能感兴趣的:(js设计模式之策略模式学习)